Google Colaboratory에서 music21 사용

소개



Jupyter상에서 악보를 표시할 수 있다고 듣고, music21 라고 하는 패키지를 시험해 보았다.
Google 공동체 위에서 표시시키는데 수고를 했으므로 비망록으로 남겨 둔다.

설치 방법



X virtual framebuffer를 이하의 코드와 같이 설정을 하는 것으로, Colaboratory상에서도 악보가 표시되게 된다.

setup.py
# music21のインストール(Jupyterと共通)
!pip install --upgrade music21
!apt-get install musescore
# 仮想フレームバッファの設定(Google Colaboratoryで必要な設定)
!apt-get install xvfb
!sh -e /etc/init.d/x11-common start
import os
os.putenv('DISPLAY', ':99.0')
!start-stop-daemon --start --pidfile /var/run/xvfb.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1024x768x24 -ac +extension GLX +render -noreset
# パスの設定(Jupyterと共通)
from music21 import *
us = environment.UserSettings()
us['musescoreDirectPNGPath'] = '/usr/bin/mscore'
us['musicxmlPath'] = '/usr/bin/mscore'
us['directoryScratch'] = '/tmp'

실행 결과



'개구리 노래'의 악보 등을 표시해 보았다.

plot.py
#TinyNotation記法による『カエルの歌』
cp = converter.parse('tinyNotation: 4/4 c4 d4 e4 f4 e4 d4 c4 r e4 f4 g4 a4 g4 f4 e4 r c4 r c4 r c4 r c4 r c8 c8 d8 d8 e8 e8 f8 f8 e4 d4 c4 r')
#楽譜の表示
cp.show()
#ピアノロール式表示
cp.plot()
#ヒストグラム表示
cp.plot('histogram', 'pitch')

악보 표시





피아노 롤 표현 표시





히스토그램 표시





도전



MIDI 재생이 잘되지 않습니다.
Web Audio API와 연결하거나 로컬 머신의 디바이스를 이용할 수 있으면 들릴 것이며, 시간이 있을 때에도 검증하고 싶다.

play.py
#リファレンス上は下記のコードで再生されはず...
cp.show('midi')

누군가 아는 사람이 있으면 꼭 알려주세요.

좋은 웹페이지 즐겨찾기