【Music21保存版】音楽家必須のPythonプログラミング〜楽譜の管理と楽曲分析の最強ツール

最終更新日

この記事はAmazonをはじめとした各種広告を含みます。

音楽の世界は、感情を揺さぶる芸術の表現だけでなく、構造、理論、そして歴史を探求する深い学問の領域でもあります。

この複雑な芸術形式を解析し、新たな創造的可能性を模索するために開発されたのが、Pythonのライブラリ「music21」です。

音楽理論家、作曲家、教育者、そして学生たちにとって、このツールは音楽研究の新たな地平を開くものとなります。

簡易紹介:こうたろう

1986年生まれ
音大卒業後日本、スウェーデン、ドイツにて音楽活動
その後金田式DC録音のスタジオに弟子入り
プログラミング(C)を株式会社ジオセンスのCEO小林一英氏よりを学ぶ
現在はヒーリングサウンド専門のピアニスト、またスタジオでは音響エンジニア、フォトグラファーなどマルチメディアクリエーターとして活動中
当記事ではプログラマー、音響エンジニアとして知識とスキルをシェアしていきます

この記事で習得できること

Pythonを使った楽譜の作成や操作、管理まで楽譜に関することを取り扱うプログラムを学べます。

  • 音楽のデジタル化と視覚化: MIDIやMusicXMLなどのフォーマットから音楽を読み込み、楽譜として視覚化することができます。これにより、曲の構造や動きを直感的に把握することが可能になります。
  • 音楽理論の探求: 和音進行の分析、旋律の動きの研究、リズムパターンの解析など、音楽理論の深い知識を掘り下げることができます。これらの分析により、作品の理解をより深めることができるでしょう。
  • 作曲とアレンジ: music21は、新たな作曲や既存の楽曲のアレンジを試みる際にも役立ちます。アルゴリズムに基づく作曲や、音楽理論に基づいた自動ハーモナイゼーションなど、創造的な試みが可能です。
  • 音楽教育への応用: 教育現場では、music21を使って学生たちに音楽の基礎や作曲技法を教えることができます。インタラクティブな分析ツールとして、音楽理解の助けとなるでしょう。
  • 歴史的音楽の分析: バッハやベートーヴェンなど、古典音楽の大作をデジタルフォーマットで分析し、その時代の音楽スタイルや構成技法を理解することができます。

これらはmusic21が可能にする分析のほんの一部です。

音楽と科学の融合を通じて、新しい音楽の発見と創造を求める探究者たちにとって、music21は貴重なツールですし、音楽家必須のツールとなりますので、まだPythonをインストールしていない方はまずはPythonの環境構築からはじめてください。

記事の通りに進めていけば完了しますのでゆっくりやっていきましょう。

また、しっかり学びたい方は書籍の購入がおすすめです。

音響のプログラムに関する専門書を紹介しておきます。

楽譜を表示する方法

まずは楽譜を表示してみましょう。

Pythonで描画と言えばmatplotlibになりますが、楽譜の表示ですので、外部アプリと連動して使います。

ここでは無料の楽譜表示アプリであるMuseScoreを例に進めていきましょう。

MuseScoreは基本無料です。

楽譜の取り扱いツールとしてはかなり優れていますので音楽をやるなら必ずインストールしておきましょう。

バッハの楽譜を表示

試しにbwv846をmusic21とMuseScoreを使って表示させてみます。

mucis21の楽譜管理ライブラリーから読み込みます。

from music21 import corpus

# BWV 846を読み込む
bwv846 = corpus.parse('bwv846')

# 楽譜を表示する
bwv846.show()

呼び出しはたったこれだけです。

基本的に管理番号で呼び出すことができます。

ただし、ここでは初心者の方は十中八九エラーが出るかと思います。

エラーの特定とデバッグは大変な作業ですので、根気良く行なってください。

デバッグ作業

まず大きく考えられるのは下のようなアイコンでエラーが出るケース。

これはSDL2がインストールされていない(Anacondaを使っている方はインストールされているはずです)、もしくはpathの設定ができていないか、pathの通し方が間違っているかのいずれかです。

こちらの記事にてpathの環境変数を固定する方法などについて解説していますので、参照してみてください。

この記事のデバッグ作業の項目で解決するはずです。

次に考えられるエラーがアプリケーションであるMuseScoreのpathが通っていないパターンです。

ジュピターノートブックやその他Pythonの環境内にてpathを通してください。

アプリケーションのpathを通すコードはこちら。

from music21 import environment
env = environment.UserSettings()
env['musicxmlPath'] = '/path/to/MuseScore'
env['musescoreDirectPNGPath'] = '/path/to/MuseScore'
ポイント

アプリケーションのパスを確認する方法は次の通りです。
プログラムの中で直接パスを指定して起動させることもできますが、あまりスマートな方法ではないので、使っている環境に沿ってしっかりパスを通しておきましょう。

Windows:

  1. MuseScoreを通常の方法でインストールした場合、プログラムは通常C:\Program FilesまたはC:\Program Files (x86)にインストールされます。
  2. スタートメニューでMuseScoreを検索し、見つかったら右クリックして「ファイルの場所を開く」を選択することで、実行ファイルがあるフォルダを見つけることができます。
  3. 実行ファイル(MuseScore3.exe)を右クリックし、「プロパティ」を選択すると、”ターゲット”フィールドに実行可能ファイルへのパスが表示されます。

macOS:

  1. Finderを開き、Applicationsフォルダに移動します。
  2. MuseScoreアプリケーションを探し、右クリック(またはCtrl + クリック)して「パッケージの内容を表示」を選択します。
  3. Contents > MacOSフォルダに進み、MuseScoreの実行可能ファイルを見つけます。
  4. このファイルをターミナルにドラッグ&ドロップすると、フルパスが表示されます。

Linux:

  1. ターミナルを開き、which musescore(あるいはMuseScoreのインストール時に指定した名前が異なる場合はそれに応じて)を実行します。これにより、MuseScoreの実行可能ファイルのパスが表示されます。
  2. または、whereis musescoreコマンドを使用しても同じ情報が得られる場合があります。

これで楽譜が表示されるはずです。

最初の1ページしか表示されない

music21を使用して楽譜を表示する際、デフォルトで最初のページだけが表示されることがあります。

これは、使用している楽譜ビューワー(例えばMuseScore)の設定や扱い方によるものです。

楽譜全体を表示するためには、いくつかの方法がありますがもっとも手っ取り早いのが楽譜をMusicXMLとして保存してMuseScoreで開く方法です。

以下のコードでXMLファイルとして書き出してくれます。

bwv846.write('musicxml', 'bwv846.musicxml')

エクスポート先を変更する場合はパスを指定してください。

from music21 import corpus

# BWV 846を読み込む
bwv846 = corpus.parse('bwv846')

# MusicXMLとしてエクスポート(ファイルパスを指定)
bwv846.write('musicxml', '/path/to/your/output/directory/bwv846.musicxml')

MuseScoreで開いたあとでPDFで出力することも可能です。

  1. MuseScoreを開きます。
  2. 「ファイル」メニューから「開く」を選択し、保存したMusicXMLファイルを開きます。
  3. 再度「ファイル」メニューを開き、「エクスポート」を選択します。
  4. ファイルタイプとして「PDF」を選択し、エクスポート先のファイルパスを指定します。

music21の楽譜管理番号

music21における楽譜の管理番号は、通常、作品の一般的なカタログ番号や作品番号に基づいています。

これらの番号は、作曲家ごとに特有の命名規則に従っていることが多く、例えばJ.S. バッハの場合はBWV番号(Bach-Werke-Verzeichnis、バッハ作品目録の略称)が使用されます。

管理番号のルール

  • バッハ(J.S. Bach): BWV番号を使用。例: BWV 846(平均律クラヴィーア曲集第1巻第1曲 プレリュード)
  • モーツァルト(W.A. Mozart): Köchel(K)番号を使用。例: K. 545(ソナタ第16番)
  • ベートーヴェン(L.v. Beethoven): Opus(作品)番号を使用。例: Op. 27, No. 2(月光ソナタ)

ドキュメントとリソース

music21のドキュメントでは、コーパスに含まれる作品のリストや、それらを引用するための具体的な番号が提供されています。

このドキュメントはmusic21の公式ウェブサイトやGitHubページで参照できます。

また、特定の作曲家の作品リストや、それらのカタログ番号については、以下のリソースも参考になります:

  • music21のドキュメント: music21公式ウェブサイトのドキュメントセクションには、コーパスの使用方法や含まれる作品に関する情報が詳しく記載されています。 music21 Documentation
  • GitHubのコーパスリスト: music21のGitHubリポジトリには、コーパス内の作品のリストが含まれている場合があります。また、GitHubのIssuesやDiscussionsを利用してコミュニティから情報を得ることもできます。 music21 GitHub

これらのリソースを参照することで、特定の作品をmusic21でどのようにしてアクセスできるかの詳細を確認することができます。

また、music21コーパスに含まれる作品は、パブリックドメインに属する作品が多いため、著作権に関する制限を気にする必要はありません。

例えばk545を呼び出す場合はこのようにまずはk545を呼び出し、同様にXMLファイルにダウンロードしてMuseScoreで読み込んでください。

from music21 import corpus

# モーツァルトのK. 545を読み込む
k545 = corpus.parse('mozart/k545', movementNumber=1)

# MusicXML形式で保存
k545.write('musicxml', 'k545.musicxml')
k545.write('musicxml', 'k545.musicxml')

特殊な表示(特定の音だけ色付け)

例えばCの音だけ赤く表示する場合をみてみましょう。

直接楽曲分析とは関係ないかもしれませんが、教育目的に使用することもあるかもしれません。

色を変える音は任意で設定してください。

from music21 import *

# BWV 846を読み込む
bwv846 = corpus.parse('bach/bwv846')

# すべての音符をループし、Cの音を探す
for element in bwv846.recurse():
    if isinstance(element, note.Note):
        if element.pitch.name == 'C':  # 単一の音符でCの音を探す
            element.style.color = 'red'
    elif isinstance(element, chord.Chord):
        for pitch in element.pitches:
            if pitch.name == 'C':  # コード内のCの音を探す
                element.style.color = 'red'

# 楽譜を表示
bwv846.show()

フルスコアで表示する場合は先述の通りMuseScoreを使ってください。

次のコードにて、フルスコアのCの音を赤色の音符に変えたXMLファイルを任意のパスに出力するコードです。

from music21 import *

# BWV 846を読み込む
bwv846 = corpus.parse('bach/bwv846')

# すべての音符をループし、Cの音を探す
for element in bwv846.recurse():
    if isinstance(element, note.Note):
        if element.pitch.name == 'C':  # 単一の音符でCの音を探す
            element.style.color = 'red'
    elif isinstance(element, chord.Chord):
        for pitch in element.pitches:
            if pitch.name == 'C':  # コード内のCの音を探す
                element.style.color = 'red'

# MusicXMLファイルとして保存するパスを指定
xml_path = 'bwv846_colored.xml'

# MusicXMLファイルとして書き出し
bwv846.write('musicxml', fp=xml_path)

print(f"BWV 846 has been saved as a MusicXML file at: {xml_path}")

主旋律だけ抜き出して表示

分かりやすくk545にて主旋律だけ抜き出してみましょう。

from music21 import *

# K. 545を読み込む(Music21のコーパスに含まれている場合)
sonata = corpus.parse('mozart/k545', movementNumber=1)

# 最初の声部(右手)を抽出
right_hand = sonata.parts[0]

# 主旋律を表示
right_hand.show()

MIDIに関するサンプルコード

MIDIプログラムは音楽系の中で特に有名なプログラムです。

MIDIを取り扱う場合にはMIDIキーボードや、USB電子ピアノなど、コントローラーがあれば便利です。

ポイント

こちらの記事にてMIDIキーボードのおすすめを紹介していますので、チェックしてみてください。

XMLをMIDIに変換

次にXML(スコア用)ファイルをMIDIデータに変換するコードをメモしておきましょう。

from music21 import * # BWV 846を読み込む bwv846 = corpus.parse(‘bach/bwv846’) # MIDIファイルとして保存するパスを指定 midi_path = ‘bwv846.mid’ # MIDIファイルとして書き出し bwv846.write(‘midi’, fp=midi_path) print(f”BWV 846 has been saved as a MIDI file at: {midi_path}”)

これでMIDIファイルに変換することができます。

MIDIをXMLに変換

あなたの作成したMIDIファイルをMuseScoreなどで読み込ませるためにXMLに変換してください。

以下のコードで変換することができます。

from music21 import converter, musicxml

# MIDIファイルを読み込む
midi_path = "path_to_your_midi_file.mid"
score = converter.parse(midi_path)

# MusicXML形式の文字列に変換
mxl = musicxml.m21ToXml.GeneralObjectExporter(score)
xml_str = mxl.parse()

# XMLファイルに保存
with open("/Users/kotaro/Documents/n.xml", "w") as f:
    f.write(xml_str.decode('utf-8'))

MIDIファイルが破損していないか確認するコード

上記の相互変換の際にエラーが発生し、デバッグできないようでしたら試して欲しいことがMusic21のアップグレード。

これは簡単でコマンドでOKです。

pip install --upgrade music21

次に考えられるのがMIDIファイルそのものが破損していないか?

これは次のコードで判定することができます。

from music21 import converter

midi_path = "path_to_your_midi_file.mid"

try:
    # MIDIファイルを読み込む
    score = converter.parse(midi_path)
    print("ファイルは正常に読み込まれました。")
except Exception as e:
    print(f"エラーが発生しました: {e}")

Type 0かType 1

正常判定が出てもなおエラーが出る場合はMIDIファイルの保存形式によって解消されるかもしれません。

以下はLogicでの例ですが、MIDIファイルの取り扱いなど含めて他のDAWソフトでも互換性のある考え方ですので、MIDIファイルの取り扱いの参考にしてください。

MIDIファイルの保存方法

  1. プロジェクトの準備: Logic Proでプロジェクトを開くか新規作成します。
  2. MIDIトラックを選択: 保存したいMIDIトラックを選択します。全トラックを保存する場合は、すべてのトラックを選択します。
  3. ファイルメニューを開く: メニューバーの「ファイル」をクリックします。
  4. エクスポートを選択: 「ファイル」メニューから「曲をエクスポート」または「選択範囲をエクスポート」というオプションを選びます。その後、「MIDIファイルとしてエクスポート…」を選択します。
  5. 保存オプションの設定: エクスポートダイアログボックスで、ファイル名、保存場所、その他のオプションを設定します。
  6. エクスポートの実行: 「保存」をクリックして、MIDIファイルのエクスポートを完了します。

選択できるMIDIファイルの種類

Logic Proでは、主に以下のMIDIファイル形式をエクスポートできます:

  • Type 0: すべてのトラックが一つのトラックに結合された形式です。
  • Type 1: 各トラックが別々に保存されます。これが最も一般的で、柔軟性が高い形式です。

注意点とオプション

  • トラック情報の確認: エクスポートする前に、各トラックが正しく設定されているか確認してください。不要なデータが含まれていないか、必要なデータがすべて含まれているかを確認します。
  • テンポとタイムシグネチャ: MIDIファイルにはテンポやタイムシグネチャの情報も含まれます。適切に設定されていることを確認してください。
  • データのクリーニング: 不要なコントローラーデータや余分なイベントがあれば、エクスポート前に削除することを検討してください。
  • レガシーソフトウェアの互換性: 古いソフトウェアや機器でMIDIファイルを使用する場合、互換性を確認してください。必要に応じて、Type 0形式を選択することを検討してください。

エラーを避けるための形式と保存方法

一般的に、Type 1のMIDIファイルは最も互換性が高く、エラーが少ない傾向にあります。しかし、使用する他のソフトウェアやハードウェアによっては、特定のフォーマットが必要になる場合があります。Logic Proでのエクスポート時にエラーが出ないように、以下の点に注意してください:

  • 適切なフォーマットの選択: 使用する目的やソフトウェアに合わせて、Type 0かType 1を選択してください。
  • データの整合性: すべてのトラックが正しくエクスポートされているか確認してください。
  • テスト: エクスポートしたMIDIファイルを他のソフトウェアで開いてテストすることで、予期しない問題を事前に発見できます。

【ジャズ学習者必見】指定したXMLファイルを12keyすべてに移調

ジャズ音楽を学ぶものにとっては、コピーしたⅡ、Ⅴ、Ⅰのフレーズを12keyすべてに移調して身体に叩き込みたい時があるかと思います。

もちろん自分で移調しながら練習するのも身になるために大切なことですが、楽曲のアンサンブルアレンジや急遽別のキーで演奏する必要があるときなど、簡単に移調して出力できたら便利ですよね。

指定したXMLファイルを読み込んで移調して出力するコードをシェアしておきましょう。

from music21 import *

# MusicXMLファイルを読み込む
file_path = 'path/to/your/musicxml/file.xml'
score = converter.parse(file_path)

# すべての主要キーに移調
for i in range(12):
    transposed_score = score.transpose(i)
    transposed_score.show()

これで指定したファイルすべてが12keyで移調できました。

【教育用途に最適】楽譜の描画

ここからはMusic21を使って音符(楽譜)の描画に関するサンプルコードをシェアしていきます。

まずは簡単にCメジャースケールについて描画するコードを書いてみます。

スケールを描画する方法

from music21 import stream, note

# 新しい楽譜ストリームを作成
s = stream.Stream()

# Cメジャースケールの音符を追加
notes = ['C', 'D', 'E', 'F', 'G', 'A', 'B', 'C']
for n in notes:
    s.append(note.Note(n))

# 楽譜を表示
s.show()

例によってエラーが出る場合はおそらくMuseScoreのパスが通っていない可能性が高いのでパスの修正をしてください。

こちらの記事からデバッグ作業〜環境変数のエラーを修正箇所を参考にしてください。

さて、上記のコードでは、最後のCの音がオクターブ定義されていません。

スケールですからやはりオクターブを定義したほうがみやすいですね。

これは一般的な音名+該当の数字にて定義できます。

スケールの最初の音(C)を中央C(通常はC4とされる)とし、最後の音(C)を1オクターブ上(C5)として定義します。以下に修正されたコードを示します。

オクターブ定義したものがこちら。

from music21 import stream, note

# 新しい楽譜ストリームを作成
s = stream.Stream()

# Cメジャースケールの音符を追加(最後のCをオクターブ上に)
notes = ['C4', 'D4', 'E4', 'F4', 'G4', 'A4', 'B4', 'C5']
for n in notes:
    s.append(note.Note(n))

# 楽譜を表示
s.show()

Cフリジアンスケール

教会旋法の一つ、Cフリジアンスケールを描画するためには2種類の方法があります。

まず先述のようにフリジアンスケールの音階を理解している音楽家がフリジアンスケールを手動で音名入力する方法。

メジャースケールの第3音から始まるモードで、以下のような音階構成を持っています(Cフリジアンの場合): C, Db, Eb, F, G, Ab, Bb, C。

ポイント

音楽理論などに関しては、noteの音楽家育成塾という企画でも紹介していますので、音楽理論を学びたい方は是非フォローしてください。

from music21 import stream, note

# 新しい楽譜ストリームを作成
s = stream.Stream()

# Cメジャースケールの音符を追加(最後のCをオクターブ上に)
notes = ['C4', 'D4', 'E4', 'F4', 'G4', 'A4', 'B4', 'C5']
for n in notes:
    s.append(note.Note(n))

# 楽譜を表示
s.show()

もちろんこれでも可能なのです。

しかし、ここはやっぱりプログラミングですから音楽理論を定義したものを引数として使えないでしょうか。

music21は音楽理論に関する機能を持っていますので、引き出してみましょう。

from music21 import stream, scale, note

# Cフリジアンスケールを生成
cFrigian = scale.PhrygianScale('C4')

# スケールから音符のリストを作成し、ストリームに追加
s = stream.Stream()
for p in cFrigian.getPitches('C4', 'C5'):
    s.append(note.Note(p))

# 楽譜を表示
s.show()

このコードでは、scale.PhrygianScale('C4')を使用してCフリジアンスケールを生成し、getPitchesメソッドでその音階のPitchオブジェクトを取得しています。

そして、各PitchオブジェクトをNoteオブジェクトに変換して、ストリームに追加しています。

scale.PhrygianScaleを使って描画できるスケール

Music21ライブラリには、さまざまな種類のスケールが用意されており、これらを使って様々な音楽理論上のスケールを生成して操作することができます。

scaleモジュールには、メジャースケール、マイナースケール、ペンタトニックスケール、ブルーススケールなど、多くの異なるタイプのスケールが含まれています。

以下に、Music21で利用可能ないくつかの一般的なスケールのタイプを挙げます:

  1. メジャースケール: scale.MajorScale()
  2. ナチュラルマイナースケール: scale.MinorScale()
  3. ハーモニックマイナースケール: scale.HarmonicMinorScale()
  4. メロディックマイナースケール: scale.MelodicMinorScale()
  5. ペンタトニックスケール:
    • メジャーペンタトニック: scale.PentatonicScale()
    • マイナーペンタトニック: scale.MinorPentatonicScale()
  6. ブルーススケール: scale.BluesScale()
  7. モード:
    • ドリアンモード: scale.DorianScale()
    • フリジアンモード: scale.PhrygianScale()
    • リディアンモード: scale.LydianScale()
    • ミクソリディアンモード: scale.MixolydianScale()
    • エオリアンモード: scale.AeolianScale()
    • ロクリアンモード: scale.LocrianScale()

これらのスケールは、基本的に同じ方法で使用することができます。

スケールオブジェクトを作成し、そのスケールに基づいて音階を生成するためのgetPitchesメソッドを使用します。

こちらの公式ドキュメントにて詳細を確認してください。

公式ドキュメント

和音の描画(コードの解説)

こちらもスケール同様に手動入力にて描画することに加えて引数から描画することができます。

from music21 import stream, chord

# Cメジャーセブンスの音符を定義
notes = ['C4', 'E4', 'G4', 'B4']
cMajorSeventh = chord.Chord(notes)

# ストリームに和音を追加して表示
s = stream.Stream()
s.append(cMajorSeventh)
s.show()

次に引数から描画してみます。

from music21 import stream, harmony, clef, chord

# ストリームを作成し、ト音記号を設定
s = stream.Stream()
s.append(clef.TrebleClef())

# コードネームから和音を生成
cMajorSeventhChord = harmony.ChordSymbol('Cmaj7')

# 和音のピッチを取得し、1オクターブ上げる
cMajorSeventhPitches = [p.transpose('P8') for p in cMajorSeventhChord.pitches]
s.append(chord.Chord(cMajorSeventhPitches))

# ストリームを表示
s.show()

Music21では、デフォルトで楽譜がヘ音記号(Fクリフ)で表示される場合があります。

これをト音記号(Gクリフ)で表示させるには、明示的に楽譜の設定を変更する必要があります。

これはClefオブジェクトを使用して行うことができます。

全音符で表示する場合は次のコードになります。

from music21 import stream, harmony, clef, chord, duration

# ストリームを作成し、ト音記号を設定
s = stream.Stream()
s.append(clef.TrebleClef())

# コードネームから和音を生成
cMajorSeventhChord = harmony.ChordSymbol('Cmaj7')

# 和音のピッチを取得し、1オクターブ上げる
cMajorSeventhPitches = [p.transpose('P8') for p in cMajorSeventhChord.pitches]

# 和音を作成し、持続時間を全音符に設定
cMajorSeventhChord = chord.Chord(cMajorSeventhPitches)
cMajorSeventhChord.duration = duration.Duration('whole')  # 全音符

# ストリームに和音を追加し、表示
s.append(cMajorSeventhChord)
s.show()

和音を構成する各音符の持続時間を全音符に設定する必要があります。

Music21では、durationモジュールを使用してこれを行うことができます。

このコードでは、duration.Duration('whole') を使用して、和音の持続時間を全音符(4拍子)に設定しています。これにより、生成される和音が全音符として描画されます。

テンションコードの表示

Music21のharmony.ChordSymbolメソッドは、様々なタイプのコード、含めテンションコードの表記に対応しています。

一般的なコードタイプとテンションコードの表記方法は以下の通りです。

  1. 基本的なコード:
    • メジャーコード: 例 "C" (Cメジャー)
    • マイナーコード: 例 "Cm" (Cマイナー)
    • オーギュメントコード: 例 "Caug" (Cオーギュメント)
    • ディミニッシュコード: 例 "Cdim" (Cディミニッシュ)
  2. セブンスコード:
    • メジャーセブンス: 例 "CM7" (Cメジャーセブンス)
    • マイナーセブンス: 例 "Cm7" (Cマイナーセブンス)
    • ドミナントセブンス: 例 "C7" (Cドミナントセブンス)
  3. テンションコード:
    • テンションが追加されたコード: 例 "C7b9" (C7フラットナイン), "C7#11" (C7シャープイレブン)

Music21はMIDI、XML、各種オーディオデータの取り扱いや音楽理論のメソッドも多数揃えており、音楽家必須のライブラリとなっています。

音楽家であればこのライブラリのためにPythonを学んでもいいほど。

公式ドキュメントなどを参照しながら各用途にご活用ください。

音楽プログラム関連記事

【Pythonサンプルコード】録音後の音声データを文字起こしする方法
SpeechRecognitionライブラリを使用します。これは、Pythonのpipコマンドを使って簡単に行えます。…
“Pythonで学ぶ:ポッドキャストテクニック〜完成動画からMP3音声抽出”
完成動画からMP3の高音質版である320kbpsで抽出するPythonサンプルコードを紹介します。…
エポキシ基盤 vs ベークライト基盤:あなたのプロジェクトに最適な選択は?
エポキシ基盤とベークライト基盤を選択する際には、プロジェクトの要件、特に耐久性、耐熱性、コストの観点から適切な基盤を選ぶことが重要です。…
【フォルマント分析】言語パスバンド分析による語学学習効率化
スペイン語が日本人にとって相性がいい根拠を提示しましょう!…
【エンジニア向け保存版】DSD完全ガイド〜DSDからPCMへの変換サンプルコードまで
録音エンジニアとしては、自然界のロケなどもう2度といけないような場所の音響は是非DSDで残したいですし、一期一会の音楽もDSDで残したいと思うものです。…
Raspberry Piを使ってオーディオレコーダーを自作する方法
保存場所や、WIFIを使った機能の追加など、市販品ではなかなか難しいレコーダーを自作して、現場の業務を安全かつ円滑に進められるように工夫していってください。…
【Python音声からテキスト抽出】英語の字幕を自動生成する方法
日本語字幕はすでに対応可能なソフトやツールがたくさん出ていますので、自動で翻訳して出力するまでをやってみましょう。…
【音声機械学習】音源だけで性別、年齢、感情を識別するアプリの開発ガイド決定版
性別、年齢、感情を識別するアプリを開発する例を用いて機械学習の感覚を掴んでいただこうと思います。…
【Music21保存版】音楽家必須のPythonプログラミング〜楽譜の管理と楽曲分析の最強ツール
music21は、古典音楽から現代音楽に至るまで、幅広い楽曲の分析と探究を可能にします。…