본 글을 통해 최근 동영상을 통해 알려드렸던 DIY 전자악기 만드는 법을 안내해 드리고자 합니다.

하드웨어 제작은  반제품의 쉴드를 아두이노에 결합하고 스위치를 몇개 장착하는게 전부이므로 매우 쉽습니다.  하지만 프로그래밍을 통해 제어를 하려면 MIDI 프로토콜을 이해해야 하는데 인터넷에 공개된 관련 글을 봐도 곧바로 이해하고 활용하기 쉽지 않았습니다.  결국, 정확한 신호 파악을위해 직접 마스터 키보드를 구입하여;;  건반을 누를때, 뗄때, 악기가 변경될때, 기타 콘트롤시 어떤 MIDI 신호가 출력되는지 분석을 한 후에야 대충 이해가 가더군요,,  하지만 많은 분들이 그럴 여유가 없으시죠;;;

우선은 이미 제조사에서 일련의 내장된 악기음을 순서대로 반복해주는 정도의 예제가 있으므로 참고가 되실 겁니다.
하지만, 위 소스만으로는 응용이 어려우신 분들도 많으시므로 실제 스위치(건반대응)로 연결하여 기초적인 악기를 구현한 예제(연결방법 + 소스코드)를 소개드리오니 참고하시기 바랍니다.  여러분의 좀더 멋진 DIY 악기 개발에 작으나마 도움이 되었으면 합니다

추가사항.  현재 화면상의 소스코드는 Sketch 0022 버전에서 테스트된 소스입니다.  최신 아두이노 개발환경(Arduino 1.0)용 소스코드도 첨부파일에 링크되어있으니 참고하시기 바랍니다.  첨부된 파일2개는 동일한 기능 두가지 버전입니다.)

.  -로보밥-




준비물

하드웨어 준비

1. 재적층 가능 해더셋을 MIDI 악기쉴드에 납땜합니다. 여분의 헤더핀들을 아두이노에 결합 후 재적층 가능 헤더셋을 뒤집어 꽂은 상태로 납땜을 하면 수직(90도)상태로 납땜하기 용이해 집니다.

2. 아래의 이미지를 참고하셔서 MIDI 악기 쉴드에 아래와 같은 방식으로 스위치를 장착합니다. 버튼 3개만 보이지만 나머지 버튼들도 동일한 방법으로 연결하면 됩니다.  어떤 핀에 연결해야하는지는 소스코드에 나오는 버튼별 핀번호 정의부분을 보시면 됩니다.  싱겁게도 회로 연결 작업은 이것으로 끝입니다. ( 아직 MIDI쉴드를 아두이노에 장착하지 마세요!)



아두이노 프로그래밍 준비작업

1. 아두이노에 내장된 기존 프로그램이 장착된 하드웨어와 맞지 않는 경우에 대비하기위해 첫프로그래밍시엔 쉴드를 제거한 상태에서 프로그래밍(업로딩) 하실 것을 권장드립니다.

2. 컴파일전에 NewSoftSerial 라이브러리를 설치 하셔야합니다. 아두이노 프로그래밍 방법 및 라이브러리 설치방법등을 모르시는 분들은 아두이노 해당 기초 학습을 완료 후 시도하시기 바랍니다.

3. 소스코드를 웹화면에서 복사하여 사용시 일부 문자가 누락되는 경우가 있습니다. 하단에 링크된 첨부파일(MusicArtRobot.pde)을 다운로드 받으셔서 사용하실것을 권장드립니다.


DIY 전자 악기 ( Music Art Robot )소스코드


/*
 Music Art Robot v0.1(2012.Feb.4)
 ---------------------------------------------------------
 아두이노 + MIDI악기쉴드 이용한 DIY 건반악기 예제소스
 ---------------------------------------------------------
 http://ArtRobot.co.kr 
 http://RoboBob.co.kr
 재배포시, 위 URL 유지부탁드리고요, 자유롭게 사용해주세요!
 ---------------------------------------------------------
 
 아두이노 D3,D4핀은 MIDI악기쉴드 제어용이므로 다른용도로 사용하지 마세요
 아두이노 D3핀을 통해 MIDI악기쉴드에 MIDI신호를 전송합니다.(NewSerailSoft 라이브러리 필요함)
 D2핀도 SoftSerial 수신용으로 선언은됐지만, 재세팅하고 버튼 입력용으로 사용됩니다.

 버튼1 ~ 8 : 도/레/미/파/솔/라/시/도  임의 note(음계)로 변경하시면 됩니다.
 버튼9: 다른 악기 선택(현재 악기번호 + 1)  0~127
 버튼10: 다른 악기 선택(현재 악기번호 - 1)  0~127
 버튼11: 악기를 드럼셋으로 설정.
 버튼12: defaultPatch 에 정의된 악기로 변경

 외부스위치 연결방법:
 버튼의 양쪽선 중 한쪽은 아두이노 해당 핀에 연결하고, 나머지 한쪽은 GND에 공통 연결하면 끝.
 
 참고사항, 전원을 켠 후 소리가 나지않을 경우 리셋버튼을 눌러서 초기화 해주면 작동됩니다.


 MIDI악기쉴드에 대한 아래의 영문정보도 참고하세요.
 
 This code works with the VS1053 Breakout Board and controls the VS1053 in what is called Real Time MIDI mode.
 To get the VS1053 into RT MIDI mode, power up the VS1053 breakout board with GPIO0 tied low, GPIO1 tied high.
 
 I use the NewSoftSerial library to send out the MIDI serial at 31250bps. This allows me to print regular messages
 for debugging to the terminal window. This helped me out a ton.
 
 5V : VS1053 VCC
 GND : VS1053 GND
 D3 (SoftSerial TX) : VS1053 RX
 D4 : VS1053 RESET
 
 Attach a headphone breakout board to the VS1053:
 VS1053 LEFT : TSH
 VS1053 RIGHT : RSH
 VS1053 GBUF : GND
 
 When in the drum bank (0x78), there are not different instruments, only different notes.
 To play the different sounds, select an instrument # like 5, then play notes 27 to 87.
 
 To play "Sticks" (31):
 talkMIDI(0xB0, 0, 0x78); //Bank select: drums
 talkMIDI(0xC0, 5, 0); //Set instrument number
 //Play note on channel 1 (0x90), some note value (note), middle velocity (60):
 noteOn(0, 31, 60);
 
 */
 
#include <NewSoftSerial.h>
#define btn1  11    // 버튼1의 아두이노 핀번호 정의
#define btn2  10    // 버튼2의 아두이노 핀번호 정의
#define btn3  9        // 버튼3의 아두이노 핀번호 정의
#define btn4  8        // 버튼4의 아두이노 핀번호 정의
#define btn5  7        // 버튼5의 아두이노 핀번호 정의
#define btn6  6        // 버튼6의 아두이노 핀번호 정의
#define btn7  5   // 버튼7의 아두이노 핀번호 정의
// 3:midi rx , 4:midi reset  아두이노 핀 3번 4번은 이미 사용중
#define btn8  2   // 버튼8의 아두이노 핀번호 정의
                  //(SoftSerial에서 Rx핀으로 선언되지만 재 세팅 후 버튼용으로 사용)
#define btn9 A5   // 버튼9의 아두이노 핀번호 정의
#define btn10 A4  // 버튼10의 아두이노 핀번호 정의
#define btn11 A3  // 버튼11의 아두이노 핀번호 정의
#define btn12 A2  // 버튼12의 아두이노 핀번호 정의

#define defaultPatch 15 //악기 초기화 버튼 설정 악기번호

NewSoftSerial mySerial(2, 3); //SW시리얼핀 정의 D3이 MIDI신호 전송용,  D2는 미사용

byte note = 0; //The MIDI연주될 note(음계)
byte resetMIDI = 4; // VS1053 Reset용 핀
byte ledPin = 13; //MIDI 트래픽 표시용 LED
 
boolean bs1 = false;  // 버튼1의 현재상태(눌림 or 안눌림)
boolean bs2 = false;  // 이하, 위와 유사
boolean bs3 = false;
boolean bs4 = false;
boolean bs5 = false;
boolean bs6 = false;
boolean bs7 = false;
boolean bs8 = false;
boolean bs9 = false;
boolean bs10 = false;
boolean bs11 = false;
boolean bs12 = false;

boolean br1;  // 버튼1 상태 확인용 입력값 임시저장용
boolean br2;  // 이하, 위와 유사
boolean br3;
boolean br4;
boolean br5;
boolean br6;
boolean br7;
boolean br8;
boolean br9;
boolean br10;
boolean br11;
boolean br12;

int patch = 0; //악기 대응, 연주될 악기 종류 (0~127: 기본 128 가지 선택가능)

int bn1 = 60; //버튼1의  note(음계)  가령 "도"  0~127까지 지정가능 (정확한 음계 설정은 MIDI관련정보참고)
int bn2 = 62; //버튼2의  note(음계)  가령 "레"
int bn3 = 64; //버튼3의  note(음계)  가령 "미"
int bn4 = 65; //버튼4의  note(음계)  가령 "파"
int bn5 = 67; //버튼5의  note(음계)  가령 "솔"
int bn6 = 69; //버튼6의  note(음계)  가령 "라"
int bn7 = 71; //버튼7의  note(음계)  가령 "시"
int bn8 = 72; //버튼8의  note(음계)  가령 "도~"

byte byteData;

void setup() {
  Serial.begin(31250);

  //Setup soft serial for MIDI control
  mySerial.begin(31250);
//  mySerial2.begin(57600);
 
  //Reset the VS1053
  pinMode(resetMIDI, OUTPUT);
  digitalWrite(resetMIDI, LOW);
  delay(100);
  digitalWrite(resetMIDI, HIGH);
  delay(100);
 
  pinMode( btn1, INPUT);      // 버튼1 입력용 핀모드를  입력모드로 전환
  digitalWrite( btn1, HIGH);  // 내부 PullUp 설정, 스위치의 나머지 한선은 GND에 물리면 됩니다.(초간단)

  pinMode( btn2, INPUT);      // 이하, 위와 유사
  digitalWrite( btn2, HIGH);
 
  pinMode( btn3, INPUT);
  digitalWrite( btn3, HIGH);
  pinMode( btn4, INPUT);
  digitalWrite( btn4, HIGH);
  pinMode( btn5, INPUT);
  digitalWrite( btn5, HIGH);
  pinMode( btn6, INPUT);
  digitalWrite( btn6, HIGH);
  pinMode( btn7, INPUT);
  digitalWrite( btn7, HIGH);
  pinMode( btn8, INPUT);
  digitalWrite( btn8, HIGH);
 
  pinMode( btn9, INPUT);
  digitalWrite( btn9, HIGH);
  pinMode( btn10, INPUT);
  digitalWrite( btn10, HIGH);
  pinMode( btn11, INPUT);
  digitalWrite( btn11, HIGH); 
  pinMode( btn12, INPUT);
  digitalWrite( btn12, HIGH); 

}

void loop() {
    br1 = digitalRead(btn1);
    br2 = digitalRead(btn2);
    br3 = digitalRead(btn3);
    br4 = digitalRead(btn4);
    br5 = digitalRead(btn5);
    br6 = digitalRead(btn6);
    br7 = digitalRead(btn7);
    br8 = digitalRead(btn8);
    br9 = digitalRead(btn9);
    br10 = digitalRead(btn10);
    br11 = digitalRead(btn11);
    br12 = digitalRead(btn12);   
   
   if( !bs1 && !br1 ){
     noteOn(0, bn1,100);
     bs1 = true;
   }else if(bs1 && br1){
     noteOff(0, bn1,0);  
     bs1 = false;
   }
   if( !bs2 && !br2 ){
     noteOn(0, bn2,100);
     bs2 = true;
   }else if(bs2 && br2){
     noteOff(0, bn2,0);  

     bs2 = false;
   }  
   if( !bs3 && !br3 ){
     noteOn(0, bn3,100);
     bs3 = true;
   }else if(bs3 && br3){
     noteOff(0, bn3,0);  
     bs3 = false;
   }
   if( !bs4 && !br4 ){
     noteOn(0, bn4,100);
     bs4 = true;
   }else if(bs4 && br4){
     noteOff(0, bn4,0);  
     bs4 = false;
   }
   if( !bs5 && !br5 ){
     noteOn(0, bn5,100);
     bs5 = true;
   }else if(bs5 && br5){
     noteOff(0, bn5,0);  
     bs5 = false;
   }  
   if( !bs6 && !br6 ){
     noteOn(0, bn6,100);
     bs6 = true;
   }else if(bs6 && br6){
     noteOff(0, bn6,0);  
     bs6 = false;
   }  
  
   if( !bs7 && !br7 ){
     noteOn(0, bn7,100);
     bs7 = true;
   }else if(bs7 && br7){
     noteOff(0, bn7,0);  
     bs7 = false;
   }  
   if( !bs8 && !br8 ){
     noteOn(0, bn8,100);
     bs8 = true;
   }else if(bs8 && br8){
     noteOff(0, bn8,0);  
     bs8 = false;
   }  
  
   if( !bs9 && !br9 ){ //patch up (max:127)
     patch++;
     if(patch >127) patch = 0;
     talkMIDI(0xc0, patch, 0);    
     bs9 = true;
   }else if(bs9 && br9){
     bs9 = false;
   }  
   if( !bs10 && !br10 ){ //patch down (min:0)
     patch--;
     if(patch < 0) patch = 127;
     talkMIDI(0xc0, patch, 0);      
     bs10 = true;
   }else if(bs10 && br10){
     bs10 = false;
   }  
  
   if( !bs11 && !br11 ){
     //bank 0x78(drum)
     talkMIDI(0xb0, 0, 0x78);
     talkMIDI(0xb0,20, 0);
     talkMIDI(0xc0, patch, 0);    
     bs11 = true;
   }else if(bs11 && br11){
     bs11 = false;
   }  
  
   if( !bs12 && !br12 ){
     //bank MSB 0, default instruments
     patch = defaultPatch;
     talkMIDI(0xb0, 0, 0);
     talkMIDI(0xb0,20, 0);
     talkMIDI(0xc0, patch, 0);      
     bs12 = true;
   }else if(bs12 && br12){
     bs12 = false;
   }  
           

  //*************** MIDI LOOPBACK ******************//
  if(Serial.available() > 0)
  {
    byteData =  Serial.read();
    mySerial.print(byteData, BYTE);
  } 
    

}

//Send a MIDI note-on message.  Like pressing a piano key
//channel ranges from 0-15
void noteOn(byte channel, byte note, byte attack_velocity) {
  talkMIDI( (0x90 | channel), note, attack_velocity);
}

//Send a MIDI note-off message.  Like releasing a piano key
void noteOff(byte channel, byte note, byte release_velocity) {
  talkMIDI( (0x80 | channel), note, release_velocity);
}

//Plays a MIDI note. Doesn't check to see that cmd is greater than 127, or that data values are less than 127
void talkMIDI(byte cmd, byte data1, byte data2) {
  digitalWrite(ledPin, HIGH);
  mySerial.print(cmd, BYTE);
  mySerial.print(data1, BYTE);

  //Some commands only have one data byte. All cmds less than 0xBn have 2 data bytes
  //(sort of: http://253.ccarh.org/handout/midiprotocol/)
  if( (cmd & 0xF0) <= 0xB0)
    mySerial.print(data2, BYTE);

  digitalWrite(ledPin, LOW);
}





소스코드 파일 다운로드:
(순서대로 스케치 구버전용 pde 파일, 아두이노 1.0 포팅된 ino 소스)

MusicArtRobot.pde

MusicArtRobot10.ino



후기
MIDI 용어문제:  관련 용어 파악이 어려운것 같습니다. 가령 악기와 대응되는 용어만 instrument, patch, program 이 있네요.

아두이노 1.0용 소스 추가 안내. 2012년 5월 30일
많은분들이 Arduino 1.0 스케치용으로 포팅된 소스를 요청하셨는데요  변환된 파일을 이제야 올려드렸습니다. 2번째 첨부파일을 참고하시기 바랍니다.  바뀐것이라곤   NewSoftSerial.h 대신  기본제공되는 시리얼 라이브러리를 사용하기위해  SoftwareSerial.h 헤더선언을 변경한것과   Serial.print( val, BYTE)  함수를  Serial.write( val ) 로 변경한것 뿐입니다.  어렵지 않으니 직접 한번 수정(포팅)해보시고 성취감을 맛보시는것도 좋으실 것 같습니다.


관련자료 링크
http://www.midi.org/aboutmidi/tutorials.php (해당페이지에 pdf 문서 추천)
http://253.ccarh.org/handout/midiprotocol/



저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. Mr.kim

    매번 상세 설명 감사드리며 새로운 아이디어 창작에 많은 도움이 되고 있습니다^^
    질문 한가지 하겠습니다.
    NewSoftSerial 라이브러리를 설치 후 예제소스 오픈 및 컴파일 실행하면 이런 메세지가 뜹니다.
    As of Arduino 1.0, the 'BYTE' keyword is no longer supported.
    Please use Serial.write() instead.

    아직 프로그래밍은 문외한이라 잘모르겠네요.
    아두이노 프로그램 설치 후 COM포트설정 및 제품선택은 했구요...
    실습예제로 LED 점멸확인은 해봤습니다.
    공개 해 주신 MusicArtbot.ped(소스코드파일)을 수정을 해야되나요?!
    답변 부탁드리겠습니다^^

    2012.02.07 15:46 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요~
      제경우 아두이노 개발환경을 구형(스케치 022)으로 사용하고있어서 최근 Arduino 1.0개발환경에서 일부 변경된 구문과 맞지 않는것 같습니다. 일단은 구버젼의 스케치를 사용하시거나 새버전에 맞도록 수정하셔서 사용하셔야하겠네요..
      참고링크:http://blog.makezine.com/2011/12/01/arduino-1-0-is-out-heres-what-you-need-to-know/

      당장은 아니지만 저도 Arduino1.0용으로 소스를 수정하면 추가 등록하도록 하겠습니다. 알려주셔서 감사합니다. ^^

      2012.02.07 18:05 신고 [ ADDR : EDIT/ DEL ]
  2. dafwefew

    Arduino 1.0 버전으로 소스코드파일좀 알려주실수있나요?

    2012.05.27 11:25 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 아두이노1.0에서 사용가능한 포팅된 소스코드를 첨부파일에 링크해드렸습니다. 참고하시기 바랍니다.

      2012.05.30 17:07 신고 [ ADDR : EDIT/ DEL ]
  3. 코마린

    안녕하세요 저도 동영상처럼 VS1053을 가지고 미디음을 출력하려고 합니다. 데이터시트를 보니까 기본 내장된 미디음이 있는것 같은데 미디음에 대한 설명이 별로 없는것 같네요. 동영상에서 출력하는 미디음이 vs1053에서 제공하는 것을 그대로 출력하신것인지 아니면 미디음 데이터를 vs1053으로 전송해서 음을 출력하신 것인지 궁금합니다.

    2012.10.09 08:35 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 양창원

    저기 버튼이 뭐가 몇번인지 알수있을까요?? 키트랑 연결하려니까 선이잘안보여서 ㅠ.ㅠ
    제가완전초보라서 사진보고 연결중이거든요

    2013.05.16 16:30 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 스위치의 2개선 중 하나는 해당 아두이노 핀에, 나머지 하나는 GND에 연결하시면됩니다. 모든 버튼이 동일합니다. 기능별 사용되는 아두이노 핀번호는 소스코드에 나와있습니다.

      2013.05.23 09:42 신고 [ ADDR : EDIT/ DEL ]
  5. 피아노

    주파수를 127까지 제한 되어 있는데 여기서 더 올리지 못하나요 ?

    2013.11.08 09:34 신고 [ ADDR : EDIT/ DEL : REPLY ]
  6. creasento

    음계는 1음계가 끝인가요? 다른 피아노처럼 여러 음계는 어떻게 하나요?

    2014.02.09 20:41 신고 [ ADDR : EDIT/ DEL : REPLY ]
  7. 레이저하프

    로보밥님,, 소스코드는 잘 보았습니다. 오래된 글인데
    저는 지금 레이저를 이용해 Cds 수광소자에서 아날로그값을 받아들이고
    손으로 가리키어 빛을 막았을때 midi악기쉴드로 소리가 나는 작품을 만드려하고있습니다.
    이 소스코드는 boolean 이라고 0,1인 디지털로 값을 받아들이는데
    레이저 하프 같은 경우에는 센서값의 조건이 만족하면 (아날로그값) 그것을 미디악기쉴드에서
    소리가 나오도록 하고 싶습니다..~~~ 코드를 짜야하는데 너무어렵습니다~~
    어떻게 하면 좋을지 조언이나 코드 어떻게 해야할지 조언 구합니다. .ㅠㅠㅠㅠㅠㅠㅠ~~

    2014.05.01 15:22 신고 [ ADDR : EDIT/ DEL : REPLY ]
  8. creasento

    질문 드립니다. 제가 악기를 휴대가능하게 배터리를 연결하여 사용하려고 하는데 그럴 경우 그냥 배터리만 연결해주면 되는 건가요? 배터리를 연결할 경우 배터리 연결부분은 어디인가요?

    2014.08.01 14:52 신고 [ ADDR : EDIT/ DEL : REPLY ]
  9. 성병규

    아두이노 피아노를 만드는중인대 브래드보드와 아두이노를 연결할때 회로를 잘모르겠습니다
    운영자님은 어떻게 만드셨는지 궁금합니다 답변해주실수 있으시다면 답변 남겨주십시오

    2014.11.18 15:10 신고 [ ADDR : EDIT/ DEL : REPLY ]
  10. 성병규

    아두이노 피아노를 만드는중인대 브래드보드와 아두이노를 연결할때 회로를 잘모르겠습니다
    운영자님은 어떻게 만드셨는지 궁금합니다 답변해주실수 있으시다면 답변 남겨주십시오

    2014.11.18 15:10 신고 [ ADDR : EDIT/ DEL : REPLY ]
  11. electronic

    만드신 피아노 잘보았습니다^^
    저는 이것을 pic로 만들어 보고자 합니다.
    vs1053칩을 사서 아두이노로 테스트까지 완료하였는데,
    pic로 만드려니 vs1053에대한 이해도도부족하고 영어실력이 부족하여 데이트시트를 읽어보아도 잘 모르겠습니다
    그리고 vs1053칩으로 midi를 출력한 자료는 구하기가 쉽지않아서 헤매고 있는 중입니다 ㅜㅜ
    시간이 되신다면 소스작성과 관련된 팁에 대한 답변부탁드립니다ㅜㅜ
    이메일도 남기겠습니다 wlgusl077@naver.com

    2014.11.18 22:45 신고 [ ADDR : EDIT/ DEL : REPLY ]

다양한 MIDI 작곡 프로그램들에서 MIDI 신호 출력을 지원합니다.  PC의 경우 SW적인 음원으로 연주하는것도 가능합니다만, MIDI 신호를 PC 외부에 있는 전용 사운드모듈(악기,음원모듈)로 보내서 연주시킬 수 도 있습니다.   MIDI 악기 쉴드로 이 신호를 받아서 연주가 되도록 해봤습니다.

PC용 SW는  MIDI 파일을 단순 연주해주는 Sweet MIDI Player 프로그램을 사용했습니다.
물론 기타 전문가용 MIDI 작곡 프로그램도 마찬가지로 연결해서 사용이 가능합니다.  출력되는 MIDI 신호는 모두 동일합니다.

아래의 동영상을 참고하시기 바랍니다.

미션임파서블 등 MIDI 신호로 연주 테스트 동영상





저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. 승진

    지난번에 구입하고 시간이 안나 오늘에야 납땜했습니다.

    질문이 있는데 위에 사용한 것처럼 사운드 모듈로 사용하려면 어떤 스케치 프로그램을 아두이노에 넣어야하나요?
    아트로봇 설명을 보긴 했는데, 좀 헷갈리네요.
    자세한 설명이나 관련 주소 좀 알려주세요.

    그리고 [69595] 아두이노 MIDI 콘트롤 쉴드(MIDI Shield) 에는 스위치와 볼륨이 보이던데, 스위치 3개와 볼륨의 역할이 뭔가요. 설명으론 딱 감이 안잡힙니다.

    2012.02.27 01:47 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 아트로봇 QnA에 남겨주신 질문에 답변을 드렸으니 참고하시기 바랍니다. 참고로 두곳에 질문하시면,,, 제가 두번 답변드려야합니다;;;

      조금 질문이 다른것 같아 추가 안내드립니다.
      어떤 소스가 정해진것은 없습니다. 일단 제가 공개한 악기쉴드응용한 자작악기 만들기 소스를 이용하시면 도움이 되실겁니다. 단, MIDI악기쉴드와 MIDI쉴드를 함께 사용하실경우 좀더 MIDI이해가 필요하므로 직접 공부하셔서 소스코딩 작업을 하셔야합니다.

      2012.02.28 00:13 신고 [ ADDR : EDIT/ DEL ]
  2. 비밀댓글입니다

    2012.02.28 12:13 [ ADDR : EDIT/ DEL : REPLY ]
    • 메일 드렸습니다.
      요약하면, 튜토리얼에 공개된 소스에 이미 사운드모듈 기능이 포함되었습니다.

      2012.02.28 17:07 신고 [ ADDR : EDIT/ DEL ]
  3. 승진

    앗 너무 감사합니다. ^^
    역시 모르면 앞에 떡을 줘도 못 찾아 먹는가봅니다.
    이렇게 꼭 집어 가르쳐 주시니 아 이거구나 바로 오네요.
    감사합니다.

    2012.02.28 17:11 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 비밀댓글입니다

    2012.04.12 17:00 [ ADDR : EDIT/ DEL : REPLY ]
    • http://robobob.co.kr/81 에 공개해 드린 소스에 MIDI악기쉴드와 콘트롤쉴드 함께 사용할경우도 반영되어있습니다.
      시리얼포트가 두개열려있고 한곳에서 다른곳으로 패스해주는 부분을 참고하시면됩니다.

      2012.04.17 01:08 신고 [ ADDR : EDIT/ DEL ]
  5. 비밀댓글입니다

    2013.09.16 00:34 [ ADDR : EDIT/ DEL : REPLY ]
  6. 비밀댓글입니다

    2014.01.11 05:51 [ ADDR : EDIT/ DEL : REPLY ]

보통 마스터 키보드는 음원내장이 되지 않아 자체적으로 연주가 불가하고, 외부 사운드 모듈(SW 또는 HW)이 필요합니다.  고가의 사운드카드의 경우엔 모르겠지만  보통의 메인보드 내장형 사운드 카드로  SW 사운드 음원을 대체하여 사용한경우,  키보드로 연주시 엄청난 딜레이가 있네요...  건반을 누르고 소리가 날때까지 수백mSec 지연은 있는것 같습니다. (제경우 연주용으로 사용이 불가한 수준이라고 생각됩니다.) 

하지만 MIDI 악기 쉴드에 키보드 MIDI출력 신호를 곧바로 입력시켜 연주를 해본 결과 딜레이를 느낄 수 없었습니다.   고품질의 음원이 필수적이지 않다면 MIDI 악기 쉴드를  외장 악기음원(Sound Module)로 활용하는것도 좋을것 같습니다.

아래의 관련 동영상을 참고하시기 바랍니다. 









저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. midi

    그럼 음원 usb메모리 저장한거 마스터 키보드에 꼿아서 사용가능한가여?

    2012.01.26 12:39 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요, MIDI 악기 쉴드는 자체내장된 악기 소리만 재생이 가능하며, USB메모리등에 기록된 음원데이타를 읽어서 이용할 수는 없습니다. 참고로 마스터 키보드등에서 출력되는 MIDI 신호는 음원데이타가 아니고 음원 데이타를 제어하는 메시지입니다.

      2012.01.26 21:44 신고 [ ADDR : EDIT/ DEL ]
  2. midi

    글엄 한가지 더 질문이여? 음원 모듈 사울드모듈 그거는 미디 프로그램 소나 아니면 큐베이스 에서 가능 한건가여?
    저는 저희 행님 께서 구해주셧거든여 큐베이스 2엿나 3이엿나 그럴꺼라는대 어디 까페 에서 컴 잘 하시는 분께서 한글 판으로 따로 만드셧다네여 만든게 아니고 번역 한글로 나오게 끔 해놓으셧다고 행님 컴에 저장 해놧다네여
    그거 써도 별 문제는 없을까여? 저는 MR그게 제가 사고픈게 한곡에 3만원 블럿어여 그리고 좀 떨어지는 품질 아님 별 중요 한게 아닌 음악 인경우에는 반갑 15000원 인대 그것도 싸게 파는 사람 만 그가격 이고 다른사람 은 좀더 비싸네여 가상악기 필요해여 드럼 그리고 라틴 타악기 팀발레스 엿나 아님 탐탐 그런거 하고 까혼 봉고 이런것들이여 콩가는 구지 없어도 되겟네여 봉고 가 없으면 또 모를까여 그리고 현악기 첼로 바이올린 통기타 베이스기타 일렉기타
    기타등틍 키보드 에잇는 음원 그리고 기타 음향 비소리 바람소리 이런 식이여 그리고 리듬악기 소리 등등 여러 가지여 저는 피아노 잘모름니다 그래서 그래여 그냥 코로그 꺼 작은거 트럼페드 만 잇는 컨트롤러 그거하고 같은 크기 의 건반 형 미디 키보드 사려고 생각 해봣는대 첨봣을때 10만원 인가 젤비싸게 본게 12만원이엿어여 그래서 엄두도 못넷엇는대 엠오디오 꺼 보니까 열라 싸네여 좋고여 제가 아는 멕시코 친구 한태 물어봣더니 두모댈 다 좋다고 하네여 멕시코는 한국 보다 성능 좋지만 한국 보다 더 비싸다네여 스타킹 에서 맥시코 팀 나온거 보셧나여? 아빠에 청춘 오동동 타령 라밤바 거기 서 키보드 햇던 친구에여 엠알 만들어 보려고여 그친구는 이미 고국 으로 아에 가버렷지만 다른 사람 올꺼에여 그전에 공연 할때 잇던 몃몃친구 도 잇거든여 열락 메신저 열락 되는 친구여 그것도 키보드 연주 가 담당 파트 엿던 친구여 아니 그 현지 멕시코 에서도 그게 주 담당 파트 고여 말을 잘못해서 좀 글씨 그나라 말로 쓰는것도 흼들고 구글 번역 해도 잘 이해 않간다고 답변오고 그래서 그냥 여기 다 미디 마스터 키보드 에 대한 문의 글 올리는거에여 처음 할때는 마스터 키보드 몃건반 짜리 가 좋을까여? 그리고 일반 키보드 에서 마스터 키보드 용으로 사용 가능 한것은 뭐가 인가여 그리고 가격 대 는 어느정도 인가여? 무진장 비싼것은 않되여 35만원 도 좀 돈 많이 모와야겟네여 저는 엠오디오 꺼 마스터키보드 61건반 그거 최저가 가격이 19500원 이라고 되잇는대 딸랑 그정도 에여 지금 당장 이여 그러나 모와야겟저 열라게 모와대야겟어여 35만원 까지는 가능 할듣싶네여 그러나 지금 다른악기 사려고 페루 친구 한태 문의 해놯기때문에 흼들지도모르겟네여 35만원이여 문의 한게 한친구 말고 또다른친구 한태도 문의 해놯는대 합게 총 가격 최소 에서 최고 까지 50만원~60만원 까지 임니다 그래서 저 올해 적자 나겟네여 일 해도 지갑에 들어오는게 없어여 다 저희 어머니께서 가저가셧어여 통장 과 카드여 ㅠㅠㅠㅠㅠㅠ (저는종달새 임니닼ㅋㅋ)

    2012.01.26 22:20 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 와우~ 질문에 정성을 많이 쏟아 주셔서 감사드립니다.
      MIDI악기쉴드는 GM악기 128개정도와 드럼셋 50개정도의 악기음을 지원합니다만, MIDI 전문가분들이 사용할 정도의 음원일 지는 모르겠습니다. 제경우 MIDI나 관련 소프트웨어 및 작곡에 대해서는 잘 모릅니다. 때문에 관련 전문가분들이 많이 모여있는 커뮤니티에 질문해보시는것이 좋을것 같습니다. 제가 알고 있는 네이버 MIDI카페는 아래와 같습니다.
      참고하시기 바랍니다.
      http://cafe.naver.com/midimania
      좋은하루되세요~

      2012.01.27 21:46 신고 [ ADDR : EDIT/ DEL ]
  3. 질문

    원하는 형태의 미디건반을 만들고싶습니다. 도와주세요...
    카톡연락 부탁드릴게요
    jihoon6894

    2012.09.02 03:47 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 질문

    원하는 형태의 미디건반을 만들고싶습니다. 도와주세요...
    카톡연락 부탁드릴게요
    jihoon6894

    2012.09.02 03:47 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요
      문의사항은 가능한 구체적으로 질문주셔야 답변이 가능합니다.
      적절한 설명이 필요하신경우 (이미 메인페이지에 안내해드린) sixgen@gmail.com 으로 보내주시면 답변드리도록하겠습니다.
      카톡 상담은 불가한점 양해부탁드립니다.

      2012.09.14 15:23 신고 [ ADDR : EDIT/ DEL ]
  5. 비밀댓글입니다

    2013.04.01 23:15 [ ADDR : EDIT/ DEL : REPLY ]
    • 죄송합니다만 제작대행을 해드릴 여유가없습니다.
      특히 내부 프로그램을 변경할수있으셔야 활용폭이 넓어지고
      아두이노를 조금만 공부하셔도 직접 제작이 가능하므로 자작을 고려해보시기 바랍니다. 참고로 시중에선 판매되는 USB to MIDI 변환케이블을 이용하시면 PC와 연결가능합니다.(관련글 및 동영상 참고)

      2013.04.02 10:42 신고 [ ADDR : EDIT/ DEL ]
  6. John

    안녕하세요, 악기실드로 외장형 MIDI 음원을 제작하려고 합니다.
    제품 스펙들을 보니, 미디 커넥터 실드와 미디 악기 실드 두 개를 조합하면
    구현할 수 있지 않을까 싶었는데, 예제 동영상들을 보니 모두 아두이노와 결합되어 있어서,
    저처럼 단순한 용도일 때 아두이노가 꼭 필요한 것인지 문의 드립니다.
    즉, 커넥터 실드로 부터 RX 신호를 받아와서 악기실드의 입력에 바로 넣어주는 형태로 제작이 가능할는지요?

    예전엔 저가형 사운드카드도 FM synth가 내장되어 있어서 지연 없는 MIDI 음원으로 사용 가능했었는데, 요즘 나오는 사운드카드는 FM 음원을 탑재하고 있지 않아 S/W 방식으로 밖에 사용할 수 없어서 엄청난 지연시간 때문에 주인장님 말씀처럼 실시간 연주에는 사용할 수 없는 지경에 이르러, 저가형 음원 모듈을 찾아 헤매다가 악기실드라는 멋진 제품을 발견하여 문의를 드립니다.

    2013.04.05 07:57 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 해당 MIDI쉴드는 약간의 초기화작업이 필요하며 이를 아두이노가 처리하게됩니다.(소스코드참조)
      물론, MIDI음원칩의 데이타시트와 쉴드의 회로도를 보시고 약간의 개조를 하면 가능할것도 같습니다. 가격이 부담되신다면 아두이노호환보드 사용이 더 적절한 선택일것 같습니다.

      2013.04.11 11:50 신고 [ ADDR : EDIT/ DEL ]
  7. 비밀댓글입니다

    2013.04.06 01:14 [ ADDR : EDIT/ DEL : REPLY ]
    • 건반수는 49개던 1000개던 상관없습니다.
      소스코드 그대로 사용하셔도 될겁니다. ^^.

      2013.04.11 11:41 신고 [ ADDR : EDIT/ DEL ]
    • 아, 소스코드를 못찾으셨군요...
      MIDI관련글이 여럿입니다. 아래의 링크에서 소스코드를 보실수있습니다.
      http://robobob.co.kr/81

      2013.04.11 18:14 신고 [ ADDR : EDIT/ DEL ]
  8. 일전에 악기실드를 standalone 으로 사용할 수 있는지 문의 드렸던 사람입니다.
    나중에 더 광범위한 응용을 염두에 두고 일단 아두이노 UNO까지 함께 구입하긴 했지만,
    직접 제작해본 결과 아두이노 없이 standalone으로도 가능했습니다.

    http://youtu.be/_9rbprGT2X0
    MIDI 브레이크아웃 보드에서 RX를 따서 악기실드의 MIDI-In에 연결해준 다음,
    PC에서 MIDI 명령을 출력하면 바로 작동하였습니다.

    딜레이 없이 실시간 연주가 가능하다는 점에서 매우 만족스럽습니다.
    단 한가지 아쉬운 점이 있다면, 악기실드에 볼륨저항도 달아서 나오면 좋겠습니다.
    이어폰을 연결해서 들으면 소리가 너무 커서 반드시 볼륨 달린 스피커를 연결해야 하는 불편함이 있네요. ^^

    감사합니다.;

    2013.04.22 13:21 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 와우~ 잘 만드셨네요..
      연주 실력도 너무 멋지십니다. ^^.

      2013.04.26 17:26 신고 [ ADDR : EDIT/ DEL ]
    • 아, 그리고 MIDI 신호(Note ON) 주실때 velocity 값을 줄여주시면 악기 소리도 작게 들립니다. 실제 악기와 같이 강약 조절이 가능하죠 ^^.

      2013.04.26 17:31 신고 [ ADDR : EDIT/ DEL ]
  9. 안태환

    아... 이거 혹시 소스좀 알수 있을까요..... 미디악기쉴드에 미디신호를 어떻게 넣는지 모르겠네요... 앞전에 봤던 소스를 봐도 이해가 안되서요 ㅜㅜ

    2013.09.03 21:29 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요

      공개된 소스코드 그대로 외부에서 MIDI케이블 연결하여 신호 입력하면 연주지원됩니다. 소스는 직접 이해하셔서 활용하셔야합니다 ^^.

      2013.09.04 13:37 신고 [ ADDR : EDIT/ DEL ]


ATMega 328 칩이 사용되는 아두이노(Arduino)보드에  MIDI 악기 쉴드(MP3/MIDI 지원 VLSI칩 내장)를 결합한 뒤 반나절만에 만든 전자악기입니다. 허접한 모양새와 달리 소리는 제법 쓸만합니다.( 화음까지 지원)

사운드 카테고리에 소개된 MIDI 악기 쉴드 활용 연관 동영상도 참고하시기 바랍니다.







관련 제품 링크
만드는 방법소개
위 동영상에서 보여드렸던 건반악기 제작법과 소스코드를 아래의 링크에서 참고 가능하십니다!

저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. Mr.kim

    훌륭한 작품입니다! 얼릉 건반악기 예제를 보고싶네요... 아두이노 우노가 기다리고있습니다 ㅎㅎ

    2012.02.03 09:41 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 고맙습니다!
      DIY 건반악기 예제소스를 아래의 링크에서 확인 가능하십니다. 참고하시기 바랍니다!
      http://robobob.co.kr/81

      2012.02.05 00:49 신고 [ ADDR : EDIT/ DEL ]
  2. 박승원

    위와같은 스위치 방식이 아니라 피에조를 사용한 입력방식도 동일한지요? 피에조는 선이 두가닥있어서...
    그리고 미디포트연결하여 미디신호 전송도 가능하게 하기위한 방법이 궁금합니다.
    그리고 우노에 USB를 이용하여 미디신호를 컴퓨터에 전송이 가능할까요?

    2013.02.28 08:58 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 양창원

    관리자의 승인을 기다리고 있는 댓글입니다

    2013.05.16 16:25 [ ADDR : EDIT/ DEL : REPLY ]

특정 상황마다 특정 음악을 재생해주는 장치가 있다면 인터렉티브 창작품 제작시 매우 유용합니다.  이미 소개해 드린 웨이브 실드를 이용할 수 도 있습니다만, 오늘은 좀더 간단하게 사용할 수 있는 MP3 Trigger 보드를 소개해 드리겠습니다. 

특징
1. 프로그래밍 할 필요가 없습니다.
2. 제작자가 제공해주는 파일만 복사해주면 내장 프로그램(펌웨어)을 업그레이드 할 수도 있습니다.
3. 많이 사용되는 MP3 음원을 지원합니다.
4. 간단한 사용법( MP3 파일을 숫자로 시작되는 이름으로 수정하여 복사 후 해당 숫자 버튼만 눌러주면 작동)


사용법

일단, 제품설명서를 한번 읽어 보시기 바랍니다. 더불어 최신 변경 사항이 제작자 블로그에 소개되어 있으므로 참고하시기 바랍니다.  이곳에서 최신의 펌웨어 파일을 다운로드 받아서 펌웨어 업그레이드를 우선 하는것을 추천드립니다.


1. MP3 파일 준비
 샘플링률이 192kbps 보다 큰 음원은 재생시 음이 늘어지므로 192kbps로 변환하여 사용바랍니다.

2. 파일명 변경
 파일명을 "001첫번째음악.mp3"  와 같이 xxx 3자리 숫자로 시작하도록 변경해줍니다.
(참고사항. 펌웨어 2.4 beta 경우이며, 다른 버전의 펌웨어에서는  파일명 규칙이 다를 수 있습니다.)

예상하신대로, MP3 트리거 보드에 있는 총 18 세트의 버튼입력선과 일대일 대응되게 됩니다.
가령, 제가 사용한 음원의 경우 아래와 같습니다.

001웃고있지.mp3
002그럴꺼야.mp3
003주문을걸어.mp3
...
018마지막노래예요.mp3
 
가령, 3번핀을 버튼으로 연결 시켜주면 "003주문을걸어.mp3" 음원이 재생됩니다.



3. SD 메모리를 FAT으로 포맷합니다.
일부 SDHC 지원 및 고용량 메모리는 호환되지 않는 경우가 있으니 1~2GB 이내의 제품을 추천드립니다. (제작자 블로그 및 제품설명서를 참고하세요)

4. 펌웨어 업데이트 방법
1. 제작사 웹사이트 방문 (링크)
2. xxxxxx.zip 다운로드 후 압축해제하면 hex 파일이 보입니다.
3. hex 파일은 SD 메모리에 복사하고, 파일명을 MP3TRIGR.HEX 로 변경해줍니다.
4. SD 메모리를 MP3 Trigger 에 장착합니다.
5. 네비게이션 핸들 (play/stop 버튼)을 누른 상태로 전원을 켜줍니다.
6. 상태 LED가 ON상태를 유지하게 될 동안 기다립니다.  완료되면  전원을 껐다 켜주면 완료됩니다.

관련제품 링크

관련사진




참고 동영상
아래의 동영상은 일반 전선 대신 전도성실(전기가 통하는 실)을 이용하여 원하는 mp3음원을 재생시키는 장면입니다.


저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요


오늘은 귀가 즐거운 녀석을 소개해드리겠습니다.
이녀석을 아두이노 호환보드들에 장착하면 MP3 player 기능 구현이 가능하며, wma, wav, midi 포멧도 지원합니다.

완성도 높은 하드웨어
휴대용 mp3와 같은  조그셔틀 버튼과 음량버튼이 내장되어있고 ipod dock에 장착할수있는 포트도 내장되어있습니다.   게다가 헤드폰단자외에 마이크입력단자도 제공됩니다.
오호~ 녹음도 되냐고요???  네, 가능합니다. 하지만 ATmega1280이나 2560 급 보드에서만 가능하답니다.  즉, 일반 아두이노 UNO보드는 안되고 Mega2560 보드에서 가능합니다.
그리고, DIY 창작을 하는 여러분들에게는 하드웨어만 좋아서는 안되겠죠! 

오픈소스(Open Source)
본 제품을 위한 player 구현 소스코드가 공개되어 있으므로 마음대로 모든 기능을 계량 or 해킹이 가능하다는것이 가장 마음에 드는 점입니다.









참고링크
아트로봇 제품 소개 페이지
제조사 제품정보 wiki 페이지 바로가기

첨부파일
제조사 wiki 페이지 링크가 문제일경우 첨부된 소스코드 파일을 참고하시기 바랍니다.


저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. tmdgus4768

    학교프로젝트에 뮤직쉴드를 쓰려고 구입했는데요, 아두이노 우노와 뮤직쉴드, sd카드, 전원이 있습니다. 그런데 전원을 아두이노에 연결하고 뮤직쉴드를 연결해도 뮤직쉴드가 작동되지 않네요.. 제가 특별히 컴퓨터로 프로그래밍 해야하거나 그런게 있나요?

    2013.04.23 22:03 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 네, 프로그래밍 해주셔야합니다. 제품소개페이지에 링크된 예제소스와 사용법을 참고하시면 됩니다.

      2013.04.26 17:16 신고 [ ADDR : EDIT/ DEL ]
  2. show09

    아두이노 uno를 사용해서 하는데 오픈소스가 메가로 핀설정되있어서 뮤직쉴드가 작동안되는거 같은데
    어떻게 바뀌야하는지 감을 못잡겠어서 물어봣습니다.
    친절하게 알려주시면 안될까요?

    2013.05.23 21:39 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. BAPI

    메모리로 작동 되는 것이 아니라 폰에 잇는 MP3파일을 가지고 와서 작동 되게 할 수 있을까요???
    블루투스 장치를 사서 하면 될까요??
    그리고 스피커로 소리를 내게 할 수도 있겠지요??
    학교 프로젝트로 하려는데...ㅜㅜ 아두이노에 대해 아직 잘 몰라서 문의 합니다.ㅜㅜ
    혹시 폰에 있는 노래를 가지고 와서 플레이 시키려면 어떤 장치를 사야할 까요?

    2013.05.28 15:06 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. neo

    필요에 의해서 미니PC에 음성녹음(마이크단자)을 가능하게 하려고 뒤지고 있는 생초짜 입니다.
    라즈베리파이는 없는것 같은데 아두이노 UNO와 뮤직쉴드 그리고 마이크 만 있으면 HW적으로는 준비 끝인지요.
    조언 부탁 드려요 ^^

    2013.09.03 10:59 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요
      아두이노 아날로그입력핀에 사운드센서를 결합하면 음파입력은 가능합니다만 아두이노 계산속도가 상대적으로 느려서 소리신호 처리나 전송에는 적당치 않을것 같습니다. 미니pc가 라즈베리파이 말씀하시는지요? 해당 보드는 AD핀이 없어서 그냥은 안되고 별도의 AD변환기와 마이크회로가 필요할듯합니다.

      2013.09.04 13:40 신고 [ ADDR : EDIT/ DEL ]
  5. 된잠

    뮤직쉴드 예제파일 받아서 라이브러리에 넣고 다했는데
    자꾸 playWithName 예제파일을 열어서 컴파일하면 자꾸 에러만 납니다.
    혹시나 이거 사용해보셨다면 사용하기 전 까지 과정을 좀 설명해주시면 안될까요..?

    2013.11.20 21:42 신고 [ ADDR : EDIT/ DEL : REPLY ]

아두이노에 WaveShield를 얹히면 음악재생기가 됩니다.  여기에 9V 전지등을 연결해주면 곧바로 휴대형이 되는데요, 무공해 에너지를 사용하면 더욱 좋겠죠?!  그래서 건전지 없이 태양전지를 연결하여 구동해 봤습니다.  쨍쨍 비치는 태양에너지를 쓸모있게 활용하는데 태양전지만한게 없겠죠...  날씨가 좋은경우 그늘에서도 문제없이 구동되네요.  생각과 달리 태양전지는 흐린날에도 약간이지만 전기를 생산합니다.  눈으로 한번 보시죠,  여러분의 창작품에도 응용하시면 좋을것 같습니다.




동영상1.음원은 개구리 우는소리로 넣었습니다.  개구리 우는 소리가 제법 큽니다.   확인을 위해 태양전지를 뒤집자 개구리가 울음을 끄치네요 ^^.   다시 태양을 바라보자 소리를 내기 시작합니다.



동영상2. 이제 제법 여름 기운이 느껴집니다.  너무 덥죠!  그늘에서도 작동하는지 테스트 해봤습니다.  잘~ 나오네요..  낮잠잘때 배경음으로 딱 좋을것 같습니다.  공원 밴치등에 불필요한 전력없이 태양전지로 작동되는  자연의 소리를 넣어주면 좋을것 같습니다.


동영상3.공원에서 되돌아 오는길에 자전거 뒷자석에 태양전지를 달고, 달려오면서 음악을 감상해 봤습니다.   제법 좋네요 ^^.
건전지 걱정없고,  스위치도 필요없습니다.  실내에 들어오면 자연히 꺼지고요,  밝은 곳으로 이동하면 다시 자동 재생됩니다.  와우~ Wow!!


관련 제품링크
 1. 아두이노 UNO [링크]
 2. 아두이노용 Wave Shield [링크]
 3. 태양전지 [링크]




저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. cchead

    우와 태양전지에 아두이노라.. 응용하면 앞으로 엄청나게 쓰일수도 있을거같네요 특히 자전거나.. 태양을 보기 쉬운곳에

    2011.08.16 01:53 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 네, 태양전지와 아두이노를 함께 결합한 아이디어 작품을 공공 시설물에 응용하면 좋겠다는 생각이 드네요^^.

      2011.08.17 17:14 신고 [ ADDR : EDIT/ DEL ]
  2. dal_j

    아두이노를 처음 접하는 학생입니다. 키트를 조립하고 아두이노 프로그램을 연결했는데 시리얼 모니터로 확인해보니 sd메모리를 인식하지 못하고 있는데 원인을 도저히 모르겠네요ㅠㅠ... 여기저기 뒤저보다가 혹시 몰라서 한번 여쭤봅니다ㅠㅠ card.init failed // SD error // errorCode: 1 // errorData: FF 이렇게 뜨는데... 에러코드 1이 뭘 의미하는건가요?ㅠㅠ

    2012.12.10 14:59 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 전류가 일정하지 않을텐데...저렇게 아무런 장치없이 바로 input에 꽂아도 되는건가요?

    2013.10.22 15:04 신고 [ ADDR : EDIT/ DEL : REPLY ]


^^. 로보밥 얼뚱연구소에 또하나의 재밌는 제품이 들어왔습니다. 예전부터 이제품 찾는 분들이 많았는데 드디어 입수하게 되었습니다.
 자세한 소개이전에 일단 테스트 영상을 올려봅니다.



Adafruit Industries사의 아두이노용 웨이브 쉴드이며,  직접 납땜하여 조립하는 DIY형 제품입니다.
mp3플레이어의 경우 전용 하드웨어 코덱칩을 사용하곤 하는데요, 요제품은 걍 wav파일을 곧바로 DAC칩으로 재생해버리므로 코덱같은거 없습니다.  단점일수있지만 반대로 장점일 수 도있죠,
low level 의 wav데이타를 곧바로 DA로 변형후 OPamp로 증폭하여 출력합니다.
그리고, 사실 mp3 배우기 전에  wav부터 배우는게 순서가 맞을것 같습니다.
SD메모리 슬롯도 내장하여 용량문제없이 음악재생이 가능하고, SD메모리만 응용할 수도 있습니다.

아래의 예제는 sd메모리에 미리 넣어둔 wav파일 몇개를 지정된 키를 누를때마다 재생하는 예제입니다.
관련예제는 해당제품 안내페이지에서 모두 보실 수 있습니다.
기회가 되면 상세 리뷰도 소개해 드리겠습니다.

참고자료
 . 제품소개 페이지 -아두이노 웨이브 쉴드 (Adafruit Wave Shield for Arduino)
 . 웨이브쉴드 버튼 연동 예제 소개
 . 웨이브쉴드 사용법 소개






PCB와 조립용 부품이 제공되며 직접 납땜으로 완성시키는 DIY형 제품입니다.



저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. moonsflow

    저는 이거 살려고 adafruit 에 직접 주문했었는데, 이렇게 국내서도 구매할 수 있다니 반갑네요.

    2011.06.10 10:04 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 로보밥

      안녕하세요~
      좋은물건을 국내에 소개할 수 있게 되어 뿌듯한 마음입니다. 국산형 웨이브 쉴드도 곧 나오면 좋겠고요 ^^.

      2011.06.10 22:27 신고 [ ADDR : EDIT/ DEL ]
  2. brownee

    안녕하세요 지금 이 웨이브 쉴드와 직비를 이용하여 보내는 신호에 따라 소리가 나게하는 로봇을 만들고 있는 학생 입니다.
    우노에 직비E쉴드를 이용하여 직비를 올리면 디지털 IO포트가 0~7까지 사용 을 못합니다. ㅜㅠ 그런데
    LCS, CLK , DI ,LAT가 2 3 4 5 입니다. ㅜㅠ 이것을 8 9 11 12로 바꾸고 라이브러리에서
    WavePinDefs 라는 헤더파일에서 핀을 위와같이 바꾸었습니다.
    현재 SD 카드는 읽히는데 이어폰으로 소리만 나오지 않습니다. ㅠㅠ
    위와같이 핀을 바꾸면 문제가 있나요?

    그리고 우노에 전원을 넣어주는데 쉴드에도 따로 전원이 필요한가요 ??
    정말 몇일째 이 문제로 골골 앓고 있네요 ㅠ 도움 부탁드립니다.

    2012.09.11 19:02 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 위와 같이하시려면 소스코드만 바꾸시면 안되고 하드웨어 핀연결도 바꾸셔야합니다. 그보다는 그냥 XBee 쉴드를 케이블로 연결하시고 하드웨어 Serial핀인 0,1번에 연결하시면 될 것 같습니다.
      참고로, 제품문의는 아트로봇 QnA 게시판을 이용해주셔야 바로 답변이 가능합니다. 현재 블로그는 자주 못들리고 있고 링크등의 관련자료가 부족하여 답변이 어렵습니다.

      2012.09.14 15:19 신고 [ ADDR : EDIT/ DEL ]
  3. bio ablation

    관리자의 승인을 기다리고 있는 댓글입니다

    2015.09.22 16:38 [ ADDR : EDIT/ DEL : REPLY ]