夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MusicXAMLをBlenderで読み込み曲のテンポを出力する

本日はBlenderPython枠です。

BlenderではPythonを実行することで機能を拡張することができます。

今回はMusicXMLを読み込み情報を出力します。

〇環境

Windows 11PC

・MuseScore4

・Blender4.0

Blender側の処理

BlenderPythonMusicXMLを扱えるようにするためのライブラリをインポートします。

今回はmusic21を使用します。

pip install music21

music21はMITによって提供されているパッケージです。

web.mit.edu

musicXMLはMuseScoreを使用してエクスポートします。museScoreは作譜ソフトで無料で使用できます。

Blender側のPythonコードは次のようになります。

from music21 import *

def get_tempo_from_musicxml(file_path):
    # MusicXMLファイルを読み込む
    score = converter.parse(file_path)

    # メトロノームマークがある場合、そのテンポ情報を取得
    metronome_marks = score.flat.getElementsByClass('MetronomeMark')
    
    if metronome_marks:
        tempo = metronome_marks[0].getQuarterBPM()
        return tempo
    else:
        print("メトロノームマークが見つかりませんでした。")

if __name__ == "__main__":
    # 読み込むMusicXMLファイルのパス
    musicxml_path = "C:\\Users\\ xxxxx.xml"

    # テンポを取得
    tempo = get_tempo_from_musicxml(musicxml_path)

    if tempo:
        print(f"テンポ: {tempo} BPM")

パスを変更して実行することでコンソールウィンドウに次のようなログを出力できます。

本日は以上です。

Blenderで楽譜を読み込むことができました。

なおMusicXMLにテンポが存在していることを前提にしています。