pythonプログラミング で楽譜作成!| music21 ~基本操作①

pythonプログラミング で楽譜作成!| music21 ~基本操作①

みなさん、こんにちは!

今回は前回の記事の続きとして「music21」の使い方を調べました。

音の定義、譜面の表示、MIDIの再生、シャープとフラット、メロディーの生成を行いましたので、手順を紹介します!

モジュールのインポート

from music21 import *

音を定義する(note.Noteオブジェクトを生成する)

例として、第4オクターブのCを定義します。

音名、オクターブ、ピッチ、周波数は以下の様に取得できます。

f= note.Note("C4")
print(
'音名:'+ f.name + '\n' +
'オクターブ:第'+ str(f.octave) + 'オクターブ\n' +
'ピッチ:'+str(f.pitch) + '\n' +
'周波数:'+str(f.pitch.frequency) + '[Hz]'
)

譜面を表示する

f = note.Note("C4")
f.show()

音を出す

下図のようなmidiプレーヤーが表示されます。

f= note.Note("C4")
f.show('midi')

シャープとフラット

シャープは数字の前に「#」、フラットは数字の前に「-」を付けます。

f= note.Note("G4")
f_sharp= note.Note("G#4") #シャープは数字の前に「#」
f_flat= note.Note("G-4") #フラットは数字の前に「-」
print('↓ピッチ:'+ str(f.pitch))
f.show()
print('↓ピッチ:'+ str(f_sharp.pitch))
f_sharp.show()
print('↓ピッチ:'+ str(f_flat.pitch))
f_flat.show()

メロディーを定義する

streamオブジェクトを定義し、note.Noteオブジェクトを追加します。

showメソッドを用いる事で、「楽譜を表示」や「midi再生」を行います。

note1 = note.Note("C4")
note2 = note.Note("D4")
note3 = note.Note("E4")
note4 = note.Note("F4")
melody = stream.Stream()
melody.append([note1,note2,note3,note4])
melody.show()
melody.show('midi')

RepeatApendメソッド

同じ音を複数回繰り返したい場合、repeatAppendメソッドが使えます。

note1 = note.Note("C4")
melody = stream.Stream()
melody.repeatAppend(note1,6)
melody.show()

ちょっと遊んでみる ~乱数で楽譜生成~

note.Noteオブジェクトですが、MIDIノートナンバーを引数にすることもできます。

88鍵ピアノの音域は「21~108」の範囲とのことで、randint(21,108)としてメロディーを作ってみます。

import random
melody = stream.Stream()
for i in range(12):
    melody.append(note.Note(random.randint(21, 108)))
melody.show()
melody.show('midi')

工夫次第では、規則性を持った値を引数とした場合の音楽も作れそうですね!

音の長さを設定する

NoteオブジェクトのquarterLengthプロパティを変更することで、長さ調整が可能です。

※ quarter:拍、 Length:長さ

例1)quarterLengthの値を増やした場合(2分音符、全音符など)

note1 = note.Note("C4")
note2 = note.Note("D4")
note3 = note.Note("E4")
note4 = note.Note("F4")
note1.quarterLength=1
note2.quarterLength=2
note3.quarterLength=3
note4.quarterLength=4
melody = stream.Stream()
melody.append([note1,note2,note3,note4])
melody.show()

例2)quarterLengthの値を減らした場合(8分音符、16部音符など)

note1 = note.Note("C4")
note2 = note.Note("D4")
note3 = note.Note("E4")
note4 = note.Note("F4")
note1.quarterLength=1
note2.quarterLength=0.5
note3.quarterLength=0.25
note4.quarterLength=0.125
melody = stream.Stream()
melody.append([note1,note2,note3,note4])
melody.show()

休符を定義する

Restオブジェクトを定義します。

note1 = note.Note("C4")
note2 = note.Rest()
note3 = note.Note("E4")
note4 = note.Note("F4")
melody = stream.Stream()
melody.append([note1,note2,note3,note4])
melody.show()

もちろん、quarterLengthプロパティを設定すれば、長さも変更可能です。

note1 = note.Note("C4")
note2 = note.Rest()
note3 = note.Note("E4")
note4 = note.Rest()
note1.quarterLength=1
note2.quarterLength=0.5
note3.quarterLength=0.25
note4.quarterLength=0.125
melody = stream.Stream()
melody.append([note1,note2,note3,note4])
melody.show()

次のステップへ

楽譜の取り込み、移調方法について紹介します。

本日のAmazonおすすめ_Top10

2023-09-27 10:43:11時点