에어드럼 제작하기 (OpenCV+아두이노 Air Drum)
프로젝트/에어드럼

에어드럼 제작하기 (OpenCV+아두이노 Air Drum)

반응형


에어드럼을 제작할 계획은 사실 아두이노를 처음 배우기 시작할때부터 이었다. 처음에는 mpu6050와 같은 가속도 센서를 이용해 제작할 계획이었지만 정확한 타점을 인식할 코드를 어떻게 구현할지가 막막했다. 그렇게 에어드럼 프로젝트는 잊혀지는가 싶던 참에 흥미로운 동영상 하나를 발견했다.



위 영상은 OpenCV를 이용해 특정 색깔을 입힌 드럼스틱을 추적하여 추적된 물체가 카메라상 특정 위치에 도달하면 드럼소리를 내는 방식의 에어드럼을 구현한 것이다.


이 영상을 보고 한번 시도해 볼만한 프로젝트라는 생각이 들었다. 마침 OpenCV도 공부 중이었고 최근에 공 추적하는 코드도 알아내었으니, 벌써 반은 완성하고 들어가는 셈이었다.


우선 색깔을 기반으로 공을 추적하는 방법은 2018/08/30 - [프로그래밍/OpenCV] - OpenCV 공 추적하기 를 참고하면 된다. 추적된 공의 중심점의 좌표를 출력하고 특정 위치 (여기서는 네모난 상자)에 도달하면 다른 이벤트가 발생하게 하는 것은 일도 아니었다.

다만 문제가 하나 있었는데, 과연 파이썬으로 미디프로그램에 미디파일을 어떻게 전송하느냐가 문제였다. 구글링을 좀 해보면 파이썬으로 미디를 전송하는 라이브러리가 있는데, 미디 통신을 완벽히 이해하기에는 아직 실력이 부족하다는 생각이 들었다. 다른 방법을 찾다보니 아두이노 레오나르도의 USB MIDI 기능을 이용하면 좋다는 생각이 들었다.


아두이노 레오나르도에서 MIDI를 이용하는 방법은 2018/02/16 - [아두이노/프로젝트] - 아두이노 3채널 미디 오케스트라 를 참고하자. 이제 미디 통신도 해결됬으니 드럼을 플레이할 미디 프로그램을 구하면된는데, 필자는 EZdrummer 2라는 유료 프로그램을 이용했다.


https://www.toontrack.com/product/ezdrummer-2/



유료이긴 하지만 10일동안 무료 체험판을 사용할 수 있으니 테스트 하기에는 전혀 문제가 없었다. 프로그램을 실행한 뒤에 setting에서 midi device를 아두이노 레오나르도로 설정하면 드럼 연주가 가능하다.



드럼에서 일단은 크래쉬, 하이햇, 스내어만 사용하도록 코드를 짰다. 페달은 카메라 밖이라 당장은 사용 못하는 점이 아쉽다.


 완성된 영상이다. 마땅한 색깔있는 드럼 스틱이 없어 집안 물건들로 연주를 해보았다. 이왕이면 스틱을 내리치는 속도를 계산하여 들리는 소리의 세기도 바뀌게 하고 싶었지만 영상의 초당 프레임이 계속 바뀌어 정확한 계산이 힘들어 그 기능은 제외했다.


확실히 에어드럼은 자이로센서를 이용하든 카메라를 이용하든 연주자체는 어렵고 한계가 있는 것 같다. 하지만 집에 드럼이 없다면 한번쯤 도전해볼만한 프로젝트인 것 같다.


반응형
    # 테스트용