아두이노 플레이 멜로디 (Arduino PlayMelody) - Owl City, SNSD 멜로디 재생

2013.02.02 23:40




직장 근무로 인해서 블로그 관리에 어려움이 있습니다_2019.07.27

 


아두이노는 사용이 쉽고, 예제들이 많아서 Make & Play 라는 소제목으로 만들어보는데 의의를 두고

포스팅하고자 합니다.

저의 첫번째 아두이노로 만들어보기는 피에조 부저로 멜로디를 연주해 보는 프로그램입니다.


MAKE....



먼저 연결하세요.!

다음처럼 아두이노 호환제품 이라도 핀 배치는 같아서 연결은 똑같이 할 수 있습니다.

단순히 아두이노 9번핀에서 부저로 신호가 간뒤에 GND로 흐르고, 3번핀은 스위치 입력을 받아서

스위치가 눌러지면 부저에서 멜로디를 재생하도록 스케치(소스코드)를 짜려고 합니다.


&PLAY....

스케치만들때 라이브러리를 사용하는데 숙묵님의 (비영리 무료 라이센스)인 PlayMelody 라이브러리를 이용합니다.

PlayMelody 라이브러리는 GW-Basic과 MSX-Basic, MML코드와 비슷해서 코드를 잘 찾다보면 호환이 가능한 멜로디 코드들이 더러 있습니다.

그럼 실제 멜로디 재생에 앞서 원래 아두이노에 없는 함수이기 때문에 함수에 대해서 정의된 파일을 아두이노에서 사용 할 수 있도록 넣어주어야 합니다.

먼저 플레이멜로디 라이브러리를 다운로드 받으세요.^


 PlayMelody Library 다운로드



압축을 해제하면 다음과 같은 파일들이 나올텐데요.. 제일 중요한 파일인 PlayMelody.CPP파일과 

PlayMelody.h 파일을 복사해줍니다.



고다음 자신이 설치해둔 아두이노 폴더 (저의경우 바탕화면 arduino-1.0.3-windows)

arduino-Version-windows\Hardware\arduino\cores\arduino 폴더에 붙여넣기 해줍니다.

이렇게 해줬다면 이제부터 새로운 함수인 PlayMelody 함수가 사용이 가능합니다.

이 함수는 PlayMelody(pin, notes) 로 입력해서 사용 할 수 있고, 멜로디노트의 내용은 

다음 문구들의 조합으로 멜로디를 만들어 낼 수 있습니다. 


  pin : 스피커가 연결된 디지털 핀의 번호.

  notes : 연주를 위한 음표 기호로 구성된 문자열.

    C : 도

    D : 레

    E : 미

    F : 파

    G : 솔

    A : 라

    B : 시

    #, + : 반음 올린다.

    $, - : 반음 내린다.

    R, P : 쉼표

    > : 한 옥타브 올린다.

    < : 한 옥타브 내린다.

    O : 이어서 나오는 수치로 지정한 옥타브를 선택한다. (초기값은 4)

    T : 이어서 나오는 수치로 지정한 속도로 연주한다. (초기값은 120)

        이때 지정하는 수치는 1분에 연주할 8분 음표의 개수이다.

    L : 이어서 나오는 수치로 음표나 쉼표의 길이를 지정한다. (초기값은 4)

    . : 음표나 쉼표의 길이를 1.5배 늘인다.


더 나아가 스위치가 입력됬을 때 멜로디가 재생되도록 하려면 IF문 즉 조건문로 if(digitalRead(inPin)==1) 일때 동작내용에 PlayMelody함수를 사용하면 된답니다.^


말로 여러번 설명하는 것 보다 스케치된 코드를 한번보는게 더 이해가 빠를지도 모를까 싶어서 만들어둔 스케치 중 두금삼 하나 올렸습니다.^


 말할수 없는 비밀 두금삼 예제 스케치 다운로드



ㅎㅎ 저는 3가지 멜로디를 재생해보았습니다.^ 아직 이렇게 까지 만든 분은 없는 것 같네요.

 


이 곡은 말할수 없는 비밀에서 피아노 배틀을 보셨다면 알수있는 곡 입니다.

주인공과 이상한놈(?)이 둘이서 피아노배틀 할 때 마지막 배틀곡을 아두이노로 만들어봤습니다.



말할 필요도 없는 곡 그냥 들으면 알 수 있습니다.
정말 대중가요를 조금도 듣지 않는 사람이라면 모를 수 있습니다. ㅎ


마지막곡은 Owl City의 FireFlies로 오늘의 저의 시간은 모두 끝이군요...

그럼 FireFlies 들으면서 포스팅 마치도록 하겠습니다. 

죄송합니다. ㅎㅎ 라디오 멘트 따라했는데 글로 하니까 이상하군요. ㅋ

무튼.. 아두이노를 시작했다면 한번 만들어 보셔요... 

부품도 얼마 안들어가는 것들이라서...해볼만 합니다. 다음은 무엇에 도전 할까요??

아두이노는 뭘 만들어도 이상하지 않으니까요..ㅎ

BinGoon ARDUINO/Arduino 작품 , , , , ,

  1. 이전 댓글 더보기
  2. Blog Icon
    [Adios]

    그래, 이거였어요! 저희 실험실 프로젝트 중에 하나가 압전소자를 이용한 강약조절이 되는 피아노 건반부 제작. 이거든요ㅋㅋㅋㅋㅋㅋ
    아 물론 멘붕의 연속이지만요 ㄷㄷ

  3. 이 작품은 피아노 건반 작품이 아니에요^ 멜로디 코드를 재생하는 그냥 평범한 작품입니다.
    댓글 보면 다른 어떤 분도 강약 조절되는 피아노 만들다가 실패하셨다고 하시던데, 만드시려면 압전소자 누를때마다 전압변화를 ADC로 받아서 계속 소리 높이에 변화를 줘야될 것 같은 말로는 굉장히 복잡한 것을 해야 될 것 같아요.
    저도 시도해 보려고 했는데, 재학중이다 보니 여러모로 시간이 안나서 ㅋ 근데 굉장히 자주 방문해 주시네요.
    BinGoon의 블로그는 업데이트가 그렇게 자주 있지 않아요.ㅎ

  4. Blog Icon
    [Adios]

    피아노건반부 제작은 프로토타입만 제작할건데, 압전소자 눌러질때 생기는 전압차이로 스피커 두개를 연결해서 발생할 거라서, 이거 참고하면 도움될 거 같아요 ㅋㅋ

  5. ^^ 그런가요? 저도 참고해서 만들어 보도록 하겠습니다. 그게 언제가 될지는..... 정보 감사드립니다, 아두이노로 만들어 볼께 없네요. ㅎ

  6. Blog Icon

    비밀댓글입니다

  7. 해당 링크에서 다운로드 받으시기 바랍니다.
    https://docs.google.com/file/d/0B3TUepjmKjiXNWhYeWx6WDlGZ1E/edit?usp=sharing

    구글 드라이브로 공유된 상태로 제공되고 있습니다.^
    앞으로도 자주 방문해 주세요^^

  8. Blog Icon

    비밀댓글입니다

  9. 제가 아두이노는 아직 깊게 들어가지 않고 있어서, 자세히는 모르지만, 그렇게 만드는 것이 가능할 것 같습니다. LED 구동은 ramdom 함수로 구현시켜둔 예제가 인터넷에 있는것 같은데, 그것과 playMelody 함수를 적절히 조합하면 원하시는 대로 구현되지 않을까요? :-)

  10. Blog Icon
    Koo

    플레이멜로디 라이브러리를 다운받아서 시도해보려고 했는데 링크에 들어가니 ㅠ 아무파일도 없네요. 어디서 다운받으면 되나요?

  11. PlayMelody 라이브러리 다운로드를 누르신 후에 왼쪽 상단에 파일을 누르셔서 다운로드 눌러주시면 됩니다.^
    좋은 작품 만드시길 바랍니다.^

  12. Blog Icon

    비밀댓글입니다

  13. 안녕하세요.^
    말할수 없는 비밀 두금삼의 스케치는 해당 글 본문에 다운로드 아이콘과 말할수 없는 비밀 두금삼 예제 스케치라는 글이 같이 작성되어있는데요, 다운로드 아이콘을 눌러주시면 다운로드 하실수 있습니다.^

  14. Blog Icon
    Taeyoung

    와 정말 재미있네요~~ㅋㅋㅋ

    소스 잘 보고 배워갑니다.
    역시 공부는 즐기면서하는게 최고.

  15. 안녕하세요.^^
    맞아요.ㅎ 이쪽 공부는 특히 더 독특한걸 만들면서 공부하는게 맞는것 같습니다.
    실제로 그런 분들이 많구요.^
    그런의미에서 아이디어가 부족한 저는 :-)
    그럼 2014년 새해 복 많이 받으시기 바랍니다.

  16. Blog Icon
    kwh

    링크된 플레이 멜로디 라이브러리 파일을 다운하려 하려고 링크를 따라갔는데 파일이 없네요
    혹시 삭제된 파일인지 궁금합니다.!

  17. 안녕하세요. 해당 링크 아직 살아있는데, 간혹 가다가 안된다고 하시는 분들이 있더라구요. 원인은 무엇인지 모르겠습니다만, 메일주소 비공개로 남겨주시면 보내드리도록 하겠습니다.^^

  18. Blog Icon
    lkh

    혹시 소리를 키웠다 줄였다하는 기능도 가능한건가요?

  19. 안녕하세요.
    제가 별도로 시도해 보지는 않았지만, 출력단에 가변저항을 연결한다면 볼륨도 조절이 가능할 것으로 생각됩니다. 참고 하시기바랍니다.^

    항상 도움되는 답글 달수있도록 노력하겠습니다.

  20. 멜로디 연주가 안되요 소리는 나는데..

  21. 안녕하세요.^
    먼저 방문해 주셔서 감사드립니다. 먼저 위 PlayMelody 라이브러리를 올바른 경로에 복사를 완료하셨고, 검증&업로드도 정상적으로 완료되었는데, 그렇다면 제가 한번 다시 구현을 해봐야 알수 있을 것같습니다. 일단 재 빌드 업로드 시도 하고 피드백 주시면 감사하겠습니다.

    큰 도움 드리지 못해서 죄송합니다.

  22. 부저에서 '삐~' 하는 소리는 나는데 스위치를 눌러도 멜로디가 안나와요 스위치가 작동을 안하는거 같은데요?

  23. 블로그에 첨부되어 있는 멜로디 코드를 그대로 사용하신 건가요?? 삐 소리가 나는걸로 보아서 Tone()함수는 정상적으로 동작되는 것 같습니다. 그런데 여태껏 발생하지 않았던 문제라서 어느부분이 문제인지 정확히 알기가 어렵습니다.

    먼저 3번핀이 스위치 입력핀, 9번핀이 스피커 출력핀, 이외에 풀업저항이나 전원부 구성을 위에 배치도 대로 구성하신 다음에 재빌드 업로드 후에 나타나는 증상을 알려주시면 감사하겠습니다. 좀 더 안정적으로 만들수 있도록 노력하겠습니다..^^

  24. 위 배치도와 같이 조립했고 스케치도 그대로 다운받았는데 그냥 소리만 나고 멜로디가 안나와요 ㅠㅠㅠ

  25. 안녕하세요.^^
    윗 분과 비슷한 증상이시네요, 먼저 PlayMelody 라이브러리와 코드를 모두 정상적인 위치에 두고 에러없이 빌드(Verify) & 업로드 하신건가요??

    소리가 나는건 역시 Tone()함수는 정상적으로 동작한다는 것이고, 아마 PlayMelody 라이브러리에 있는 함수를 아두이노에서 정상적으로 불러오지 못해 재생이 정상적으로 되지 않는 것 같습니다.

    다시 업로드 후에 이상이 발생한다면 혹시 로그 창에 주황색으로 에러가 발생하는 것들을 복사해서 피드백 해주시면 감사하겠습니다.

    부족한 답변이지만, 작품만드시는데 도움되셨으면 좋겠습니다. ^^;

  26. Blog Icon
    유승아

    우와!! 정말 자세하게 설명해주신것 같아요. 근데 궁금한게 있는데 라이브러리에 있는 소리 말고
    제가 따로 녹음한 것들은 재생할 수 있는 방법은 없을까요?

  27. 녹음한것을 재생을 하는 방법은 있지만, 지금 현재 이 포스팅에 있는 라이브러리로는 구현할 수 없습니다. 저는 현재 AVR로는 WAV로 녹음된 파일을 재생해 보았는데, 아두이노로는 아직 시도해 보지 못했습니다. 참고하시기 바랍니다.^^ , 블로그 활동이 다시 왕성해지면 그 때 시도해 보도록 하겠습니다.^

  28. Blog Icon
    정창용

    안녕하세요~ 부저를 이용한 멜로디를 만들려고 검색하다 여기에 왔네요!
    위에 댓글처럼 mp3 또는 wav파일에 있는 소리를 구현하고 싶은데 변환하여 스케치에 코드로 넣는 방법이 있나요??

  29. Blog Icon

    비밀댓글입니다

  30. 안녕하세요~ 아두이노에 관심있는 학생입니다.

    요 글을 참고해서
    MIDI를 아두이노로 재생하는 법을 글로 하나 쓰려고 하는데요..

    자료들 활용해도 될까요?

  31. 음이 2개일 경우에는 어떻게 하죠?
    그리고 음역범위를 늘리고 싶은데 CPP파일을 어떻게 뜯어 고치나요?

  32. Blog Icon

    비밀댓글입니다

  33. Blog Icon

    비밀댓글입니다

  34. Blog Icon
    우오오아

    이과의 머리에 음악적 재능까지 갖고있다니 멋지군요
    혹시 Fireflies 코드도 올려 주실수 있나요??