야, 너도 드럼 칠 수 있어 : 0. 개요
드럼 악보 채보 프로젝트
- 본 글은 제 대학교 3학년 여름 방학이었던 2019년 6월부터 3개월 간 진행했던, “야, 너도 드럼 칠 수 있어” 프로젝트에 관련된 설명 글입니다.
- 편의상 설명 과정은 ‘~했다.’ 로 작성하였습니다.
- 소스 코드 는 다음과 같습니다. (Source)
채보의 사전적 정의 : 음악을 듣고 악보로 옮겨 적는 것
0. 프로젝트 시작 계기와 목표
사실 프로젝트를 시작하게 된 계기 는 꽤 도전적이었다.
계기 : 작곡을 공부하다가 드럼 악보가 복잡해서 배우기 힘들었는데, 마땅히 배울 수 있는 방법이 없었음
- 당시 상용화된 소프트웨어도 없었고, 마침 여름 방학 동안의 남는 시간을 이용해 학회 동기들끼리 교내 공모전 에 참가했다.
(놀랍게도, 아직도 없다…)
목표 : 드럼 비트를 입력받으면 악보를 출력해주는 소프트웨어의 개발
- 계기에 걸맞게, 드럼 비트 를 입력받으면 악보를 출력 해주는 소프트웨어의 개발을 목표로 프로젝트에 착수했다.
1. 개발에 필요한 요구 사항과 해결 방안
처음엔, 어디부터 시작해야 할지 하나도 몰랐다. 3학년 1학기까지 배운 것이라고는 C , Java 기본 문법 요소와 배열 , 자료구조 정도였다.
따라서 나의 얕은 음향 지식(나름 기타를 9년 정도 침) 과 우리의 전공이었던 통신/신호 처리 내용들을 토대로, 아래와 같이 프로젝트를 시작하기 위한 요구 사항 을 정리했다.
요구 사항
- FFT를 구현 할 수 있어야 함
- 개발 비용이 30만원 이내 여야 함
- 3개월 안에 완성 할 수 있어야 함
- 드럼 샘플 을 구할 수 있어야 함
이후 약간의 조사와 검색을 통해, 아래와 같은 프로젝트 해결 방안 을 도출했다.
해결 방안
- FFT를 구현 할 수 있어야 함
- 해결 : Python 의 Numpy 라이브러리 등에 이미 FFT 가 정의되어 있음
- 개발 비용이 30만원 이내 여야 함
- 해결 : JetBrains 의 Pycharm 은 학생의 교육용 목적에 한해 무료 로 제공됨
- 3개월 안에 완성 할 수 있어야 함
- 해결 : “자신감” 으로 가능할 것으로 판단 (?)
- 드럼 샘플 을 구할 수 있어야 함
- 해결 : 작곡을 공부하며 모은 샘플들 과, 프로듀싱을 하는 친구 에게 추가 샘플을 받음
그렇게 Python 언어와, Pycharm IDE 를 활용하여 개발에 착수했다.
2. 개발 진행 순서
다음과 같이 크게 네 번 의 단계를 거쳤다.
1. 드럼 비트 샘플 파일 입력
- 드럼 비트 샘플 파일 (.wav) 입력
- 각 샘플의 샘플링레이트 와 진폭 계산
2. 처리 과정 구현
- Sliding Window, FFT 구간 지정
- 특정 진폭 이상의 잡음 제거
- 리듬의 유지 시간(bpm 측정) 측정 과정 구현
3. FFT 과정
- 각 샘플에 FFT 수행
- FFT를 통해 계산된 주파수 값에 따라 악기 분류
- Kick, Snare, Tom, Ride, Crash, Hi-Hat 의 여섯 가지 로 분류
4. 결과 계산 및 출력
- 위의 여섯 가지로 분류된 악기에 따라 결과 출력
- 동시에 세 가지의 악기가 연주되는 것 을 출력하는 과정 까지 구현
각 과정에 링크 를 삽입했고, 링크를 클릭하면 바로 이동할 수 있습니다.
이제부터 시작합니다!
(수정 중입니다)
댓글남기기