Polymath: 음악 생산을 위한 강력한 도구
Polymath는 머신러닝 기술을 활용하여 다양한 음악 라이브러리를 음악 생산용 샘플 라이브러리로 변환하는 탁월한 도구입니다. 이 도구는 음악 제작자, DJ, 그리고 머신러닝 음악 개발자들의 작업 흐름을 단순화시키는데 큰 도움을 주며, 다양한 기능을 통해 음악 작업을 더욱 쉽고 효율적으로 만들어냅니다.
주요 기능
음악 소스 분리
Polymath는 Demucs 신경망을 사용하여 음악을 구성하는 각 요소(비트, 베이스 등)를 분리합니다. 이렇게 함으로써 각 음악 요소를 개별적으로 다룰 수 있게 되어, 새로운 음악 작성 시 다양한 요소를 조합하는 데 용이합니다.
음악 구조 분할 및 라벨링
sf_segmenter 신경망을 이용하여 음악의 구조(예: 구절, 후렴 등)를 분석하고 라벨링합니다. 이를 통해 음악의 구성을 더욱 명확히 이해할 수 있으며, 이 정보를 바탕으로 음악을 재구성하거나 편집할 수 있습니다.
음악 피치 추적 및 키 검출
Crepe 신경망을 통해 음악의 피치를 추적하고 키를 검출합니다. 이는 음악의 조화 구조를 파악하는 데 중요한 정보이며, 다른 음악과의 조합이나 변형 작업에 유용합니다.
음악을 MIDI로 변환
Basic Pitch 신경망을 사용하여 음악을 MIDI 형태로 변환합니다. 이렇게 함으로써 MIDI 기반의 음악 작업 환경에서도 사용할 수 있게 되며, 음악의 재구성과 편집에 더욱 다양한 가능성을 열어줍니다.
음악 양자화 및 정렬
pyrubberband를 이용하여 음악을 같은 템포와 비트 그리드로 양자화하고 정렬합니다. 이를 통해 음악들의 흐름을 일관되게 만들어주며, 여러 음악을 조합할 때 더욱 자연스러운 연결을 만들 수 있습니다.
음악 정보 검색 및 처리
librosa를 사용하여 음악의 다양한 정보( timbre, loudness 등)를 검색하고 처리합니다. 이 정보는 음악의 특성을 파악하는 데 도움을 주며, 음악의 편집과 재구성에 활용할 수 있습니다.
사용 사례
음악 제작
Polymath를 사용하면 Funkadelic 트랙의 비트, Tito Puente 작품의 베이스라인, Fela Kuti 노래의 적합한 호른 등을 쉽게 가져와서 새로운 음악을 만들 수 있습니다. 이렇게 다양한 음악의 요소를 조합하여 독특한 음악 작품을 창작할 수 있습니다.
DJ 세트 만들기
Polymath의 검색 기능을 이용하여 관련 음악을 찾아내고, 이를 통해 한 시간짜리 완성도 높은 DJ 세트를 쉽게 만들 수 있습니다. 음악들을 같은 템포와 비트 그리드로 양자화하여 더욱 자연스러운 연결을 만들어주므로, DJ 세트의 흐름을 더욱 끈기 있게 만들 수 있습니다.
머신러닝 개발
ML 개발자들은 Polymath를 사용하여 큰 음악 데이터셋을 쉽게 생성할 수 있습니다. 이 데이터셋은 생성 모델 등의 훈련에 사용될 수 있으며, 머신러닝 기반의 음악 개발에 중요한 자원이 됩니다.
설치 및 사용 방법
설치
먼저, 시스템에 ffmpeg가 설치되어 있어야 합니다. 또한, python 버전은 >=3.7 이고 <=3.10 이어야 합니다. 터미널에서 다음과 같은 명령어를 실행합니다.
git clone https://github.com/samim23/polymath
cd polymath
pip install -r requirements.txt
만약 basic-pitch를 실행할 때 문제가 발생하면, 설치 후 다음 명령어를 실행합니다.
pip install git+https://github.com/spotify/basic-pitch.git
사용 방법
- Polymath 라이브러리에 음악 추가
- YouTube 비디오를 라이브러리에 추가(자동 다운로드):
python polymath.py -a n6DAqMFe97E
- 음악 파일(wav 또는 mp3)을 추가:
python polymath.py -a /path/to/audiolib/song.wav
- 여러 파일을 한꺼번에 추가:
python polymath.py -a n6DAqMFe97E,eaPzCHEQExs,RijB8wnJCN0
python polymath.py -a /path/to/audiolib/song1.wav,/path/to/audiolib/song2.wav
python polymath.py -a /path/to/audiolib/
음악들은 자동으로 분석되며, 이 과정은 약간의 시간이 소요됩니다. 분석된 음악들은 데이터베이스에 저장되어 빠르게 접근할 수 있습니다. 데이터베이스는 "/library/database.p" 폴더에 저장됩니다. 모든 것을 초기화하려면 이 파일을 삭제하면 됩니다. 2. Polymath 라이브러리의 음악을 양자화 - 라이브러리의 특정 음악을 120 BPM으로 양자화(-q = 데이터베이스 음악 파일 ID, -t = BPM 단위의 템포):
python polymath.py -q n6DAqMFe97E -t 120
- 라이브러리의 모든 음악을 120 BPM으로 양자화:
python polymath.py -q all -t 120
- 라이브러리의 특정 음악을 해당 음악의 템포로 양자화(-k):
python polymath.py -q n6DAqMFe97E -k
양자화된 음악들은 자동으로 같은 템포와 비트 그리드로 저장되어 "/processed" 폴러에 저장됩니다. 3. Polymath 라이브러리에서 유사한 음악 검색 - 라이브러리의 특정 음악에 기반하여 10개의 유사한 음악을 검색(-s = 데이터베이스 음악 파일 ID, -sa = 결과 수):
python polymath.py -s n6DAqMFe97E -sa 10
- 라이브러리의 특정 음악에 기반하여 유사한 음악을 검색하고 모든 음악을 120 BPM으로 양자화:
python polymath.py -s n6DAqMFe97E -sa 10 -q all -t 120
- BPM을 검색 기준으로 포함(-st):
python polymath.py -s n6DAqMFe97E -sa 10 -q all -t 120 -st -k
유사한 음악들은 자동으로 찾아져서 선택적으로 양자화되어 "/processed" 폴러에 저장됩니다. 4. 음악을 MIDI로 변환 - 모든 처리된 음악 파일과 스템을 MIDI로 변환(-m):
python polymath.py -a n6DAqMFe97E -q all -t 120 -m
생성된 MIDI 파일은 현재는 항상 120BPM이며, DAW에서 시간을 조정해야 합니다. 이 문제는 곧 해결될 예정입니다.
라이센스
Polymath는 LICENSE 파일에 있는 MIT 라이센스 하에 배포됩니다.
Polymath는 음악 생산 분야에서 매우 유용한 도구로, 다양한 음악 작업을 더욱 쉽고 효율적으로 수행할 수 있게 해주는 강력한 자원입니다.