見出し画像

Google Colabで楽譜に階名(ドレミ)を追加する方法<初心者が作ってみたシリーズ 第1弾>

はじめに

はじめまして、ChatGPT部の原田です!
プログラミング経験は浅く、わからないことのほうが多いのですが、ChatGPTを使って色々面白いことをやっていこうと思います!

instagram : https://www.instagram.com/fit_shuttle_hh/

1. 作ってみた!の概要

第一弾はGoogle Colabとmusic21ライブラリを使用して、楽譜にドレミを追加する方法を紹介します。

実際のプロンプトでのコーディングの様子

2. 手順

条件としてエラー含むコーディングは、すべてChatGPTにお願いします!
読み込むファイルは、musicxml形式(アウトプットも同様)、MuseScoreも必要ですので、ご準備ください。

2.1 Google Colabを開く

Googleアカウントにログイン後、GoogleColabratoryを開き、新しいノートブックを作成します。

2.2 必要なライブラリのインストール

以下のコードをノートブックのセルに貼り付けて実行します。これにより、music21ライブラリがインストールされます。

!pip install music21 PyPDF2 pdf2image reportlab

2.3 ライブラリのインポートと必要な関数の定義

次のコードをセルに貼り付けて実行します。これにより、楽譜のファイル(MusicXML形式)をアップロードし、ドレミを追加して新しいMusicXMLファイルにエクスポートする関数が定義されます。

from google.colab import files
from music21 import *

def pitch_to_doremi(pitch):
    pitch_class = pitch.pitchClass
    if pitch.accidental:
        if pitch.accidental.name == "sharp":
            accidental = "♯"
        elif pitch.accidental.name == "flat":
            accidental = "♭"
        else:
            accidental = ""
    else:
        accidental = ""
    doremi_map = ["ド", "レ♭", "レ", "ミ♭", "ミ", "ファ", "ソ♭", "ソ", "ラ♭", "ラ", "シ♭", "シ"]
    return doremi_map[pitch_class] + accidental

def add_doremi_to_score(input_musicxml):
    # MusicXMLファイルを解析
    score = converter.parse(input_musicxml)

    # ストリーム内の音符にドレミを追加
    for note_obj in score.recurse().notes:
        if isinstance(note_obj, note.Note):
            note_obj.addLyric(pitch_to_doremi(note_obj.pitch) + " ")
        elif isinstance(note_obj, chord.Chord):
            for pitch in note_obj.pitches:
                note_obj.addLyric(pitch_to_doremi(pitch) + " ")

    # ストリームを新しい.musicxmlファイルにエクスポート
    output_musicxml = "output_doremi.musicxml"
    score.write("musicxml", output_musicxml)

    return output_musicxml

2.4 アップロードのためのプロンプトの作成

次に、以下のコードをに貼り付けて実行します。これにより、MusicXMLファイルをアップロードするプロンプトが表示されます。

uploaded = files.upload()
input_musicxml = list(uploaded.keys())[0]

2.5 アウトプットファイルの出力

アップロードが完了したら、以下のコードを新しいセルに貼り付けて実行します。これにより、楽譜にドレミが追加された新しいMusicXMLファイルが作成され、ダウンロードされます。

output_musicxml = add_doremi_to_score(input_musicxml)
files.download(output_musicxml)

これで、楽譜にドレミが追加されたMusicXMLファイルがダウンロードされます。このファイルを適切な楽譜編集ソフトウェア(MuseScoreなど)で開くことができます。

3. 実行結果

作業前後の比較を行っていきます!

3.1 作業前

3.2 作業後

見やすさはともかく…ちゃんとできてますね!Bravo!

まとめ

今回は、Google Colabとmusic21ライブラリを使用して、楽譜にドレミを追加する方法を紹介しました。この方法を使えば、簡単に楽譜を見ながら楽器を演奏する際に、音名を確認することができます。music21は非常に柔軟で強力なライブラリであり、さまざまな音楽的なタスクに応用することができます。ぜひ、試してみてください。以上です!

この記事が気に入ったらサポートをしてみませんか?