야, 너도 드럼 칠 수 있어 : 0. 개요

드럼 악보 채보 프로젝트

  • 본 글은 제 대학교 3학년 여름 방학이었던 2019년 6월부터 3개월 간 진행했던, “야, 너도 드럼 칠 수 있어” 프로젝트에 관련된 설명 글입니다.
  • 편의상 설명 과정은 ‘~했다.’ 로 작성하였습니다.
  • 소스 코드 는 다음과 같습니다. (Source)

채보의 사전적 정의 : 음악을 듣고 악보로 옮겨 적는 것



0. 프로젝트 시작 계기와 목표

사실 프로젝트를 시작하게 된 계기 는 꽤 도전적이었다.

계기 : 작곡을 공부하다가 드럼 악보가 복잡해서 배우기 힘들었는데, 마땅히 배울 수 있는 방법이 없었음

  • 당시 상용화된 소프트웨어도 없었고, 마침 여름 방학 동안의 남는 시간을 이용해 학회 동기들끼리 교내 공모전 에 참가했다.
    (놀랍게도, 아직도 없다…)

목표 : 드럼 비트를 입력받으면 악보를 출력해주는 소프트웨어의 개발

  • 계기에 걸맞게, 드럼 비트 를 입력받으면 악보를 출력 해주는 소프트웨어의 개발을 목표로 프로젝트에 착수했다.


1. 개발에 필요한 요구 사항과 해결 방안

처음엔, 어디부터 시작해야 할지 하나도 몰랐다. 3학년 1학기까지 배운 것이라고는 C , Java 기본 문법 요소와 배열 , 자료구조 정도였다.

따라서 나의 얕은 음향 지식(나름 기타를 9년 정도 침) 과 우리의 전공이었던 통신/신호 처리 내용들을 토대로, 아래와 같이 프로젝트를 시작하기 위한 요구 사항 을 정리했다.

요구 사항

  1. FFT를 구현 할 수 있어야 함
  2. 개발 비용이 30만원 이내 여야 함
  3. 3개월 안에 완성 할 수 있어야 함
  4. 드럼 샘플 을 구할 수 있어야 함

이후 약간의 조사와 검색을 통해, 아래와 같은 프로젝트 해결 방안 을 도출했다.

해결 방안

  1. FFT를 구현 할 수 있어야 함
    • 해결 : PythonNumpy 라이브러리 등에 이미 FFT 가 정의되어 있음
  2. 개발 비용이 30만원 이내 여야 함
    • 해결 : JetBrainsPycharm 은 학생의 교육용 목적에 한해 무료 로 제공됨
  3. 3개월 안에 완성 할 수 있어야 함
    • 해결 : “자신감” 으로 가능할 것으로 판단 (?)
  4. 드럼 샘플 을 구할 수 있어야 함
    • 해결 : 작곡을 공부하며 모은 샘플들 과, 프로듀싱을 하는 친구 에게 추가 샘플을 받음


그렇게 Python 언어와, Pycharm IDE 를 활용하여 개발에 착수했다.


2. 개발 진행 순서

다음과 같이 크게 네 번 의 단계를 거쳤다.

1. 드럼 비트 샘플 파일 입력

  • 드럼 비트 샘플 파일 (.wav) 입력
  • 각 샘플의 샘플링레이트진폭 계산

2. 처리 과정 구현

  • Sliding Window, FFT 구간 지정
  • 특정 진폭 이상의 잡음 제거
  • 리듬의 유지 시간(bpm 측정) 측정 과정 구현

3. FFT 과정

  • 각 샘플에 FFT 수행
  • FFT를 통해 계산된 주파수 값에 따라 악기 분류
  • Kick, Snare, Tom, Ride, Crash, Hi-Hat여섯 가지 로 분류

4. 결과 계산 및 출력

  • 위의 여섯 가지로 분류된 악기에 따라 결과 출력
  • 동시에 세 가지의 악기가 연주되는 것 을 출력하는 과정 까지 구현

각 과정에 링크 를 삽입했고, 링크를 클릭하면 바로 이동할 수 있습니다.

이제부터 시작합니다!
(수정 중입니다)

댓글남기기