🎼

pretty_midi ドキュメント日本語解説

2024/04/22に公開

概要

この記事では、Pythonのpretty_midiライブラリの機能について解説します。
pretty_midiはMIDIデータの生成、編集、解析が可能なライブラリですが、公式のドキュメントが英語のみで提供されているため、日本語話者にも理解しやすいように解説します。
記事の内容は公式のドキュメントに基づきます。

pretty_midiについて

pretty_midiは、MIDIデータを扱うためのユーティリティ関数やクラスを含んでおり、情報を変更したり抽出したりするのに適した形式で提供します。

  • MIDIファイルの分析、操作、合成の例

import pretty_midi
# MIDIファイルをPrettyMIDIオブジェクトに読み込む
midi_data = pretty_midi.PrettyMIDI('example.mid')
# 全体のテンポの推定値を出力
print(midi_data.estimate_tempo())
# 曲全体にわたる各半音の相対的な量を計算する(キーの代わり)
total_velocity = sum(sum(midi_data.get_chroma()))
print([sum(semitone)/total_velocity for semitone in midi_data.get_chroma()])
# 全ての音符を5半音上げる
for instrument in midi_data.instruments:
    # ドラムの音はシフトしたくない
    if not instrument.is_drum:
        for note in instrument.notes:
            note.pitch += 5
# 正弦波を使用してMIDIデータを合成する
audio_data = midi_data.synthesize()
  • シンプルなMIDIファイルを作成する例

import pretty_midi
# PrettyMIDIオブジェクトを作成
cello_c_chord = pretty_midi.PrettyMIDI()
# チェロインストゥルメントのためのInstrumentインスタンスを作成
cello_program = pretty_midi.instrument_name_to_program('Cello')
cello = pretty_midi.Instrument(program=cello_program)
# ノート名を反復処理し、後でノート番号に変換される
for note_name in ['C5', 'E5', 'G5']:
    # このノート名のMIDIノート番号を取得
    note_number = pretty_midi.note_name_to_number(note_name)
    # Noteインスタンスを作成、開始時刻は0秒、終了時刻は0.5秒
    note = pretty_midi.Note(velocity=100, pitch=note_number, start=0, end=.5)
    # チェロインストゥルメントに追加
    cello.notes.append(note)
# PrettyMIDIオブジェクトにチェロインストゥルメントを追加
cello_c_chord.instruments.append(cello)
# MIDIデータを書き出す
cello_c_chord.write('cello-C-chord.mid')

pretty_midi.PrettyMIDI

class pretty_midi.PrettyMIDI(midi_file=None, resolution=220, initial_tempo=120.0)

pretty_midi.PrettyMIDIは、簡単に操作可能な形式でMIDIデータを格納するためのコンテナです。

  • パラメータ

    • midi_file (str または file): MIDIファイルへのパス、またはファイルポインタ。デフォルトはNoneで、resolutionとinitial_tempoに与えられた値で空のクラスを作成します。
    • resolution (int): ファイルが提供されていない場合のMIDIデータの解像度。
    • initial_tempo (float): ファイルが提供されていない場合のMIDIデータの初期テンポ。
  • 属性

    • instruments (list): pretty_midi.Instrumentオブジェクトのリスト。
    • key_signature_changes (list): pretty_midi.KeySignatureオブジェクトのリスト。
    • time_signature_changes (list): pretty_midi.TimeSignatureオブジェクトのリスト。
    • lyrics (list): pretty_midi.Lyricオブジェクトのリスト。
    • text_events (list): pretty_midi.Textオブジェクトのリスト。
  • __init__(midi_file=None, resolution=220, initial_tempo=120.0)

    ファイルからMIDIデータを読み込んで初期化するか、データなしでゼロから初期化します。

  • get_tempo_changes()

    四分音符毎分のテンポ変更とその時間の配列を返します。

    戻り値

    • tempo_change_times (np.ndarray): テンポが変更される時間(秒単位)。
    • tempi (np.ndarray): tempo_change_timesの各時点でのテンポ(四分音符毎分)。
  • get_end_time()

    MIDIオブジェクトの終了時間(すべての楽器/メタイベントの最後のイベントの時間)を返します。

    戻り値

    • end_time (float): このMIDIファイルが終了する時間(秒単位)。
  • estimate_tempi()

    テンポと各テンポの確率の経験的推定を返します。Dixon 2001の「Automatic Extraction of Tempo and Beat from Expressive Performance」に基づいています。

    戻り値

    • tempos (np.ndarray): 推定されたテンポの配列(分毎の拍数)。
    • probabilities (np.ndarray): 各テンポ推定の確率の配列。
  • estimate_tempo()

    便宜上、pretty_midi.PrettyMIDI.estimate_tempi()から最良のテンポ推定を返します。

    戻り値

    • tempo (float): 推定されたテンポ(bpm)。
  • get_beats(start_time=0.0)

    MIDIテンポ変更に従って拍の位置のリストを返します。複合拍子(分子が3より大きい3の倍数のもの)の場合、この関数は分母音符の3つごとに1つを返します(例えば、6/8拍子や6/16拍子では、それぞれ8分音符や16分音符の3つごとに1つを返します)。その他の拍子では、分母音符ごとに1つを返します(例えば、3/4拍子や4/4拍子では、四分音符ごとに1つを返します)。

    パラメータ

    • start_time (float): 最初の拍の位置(秒単位)。

    戻り値

    • beats (np.ndarray): 拍の位置(秒単位)。
  • estimate_beat_start(candidates=10, tolerance=0.025)

    最初の拍の位置を推定します。最初の数オンセット(音の立ち上がり、音の発生時刻)のうち、オンセットスパイク列(オンセットが発生した時刻にスパイク(とげ)状の信号を並べたもの)と最も相関が高いものに基づいて推定します。

    パラメータ

    • candidates (int): 試す候補オンセットの数。
    • tolerance (float): 拍として正しいとみなすために使用されるオンセットの周囲の許容秒数。

    戻り値

    • beat_start (float): 拍の開始位置として選ばれたオフセット。
  • get_downbeats(start_time=0.0)

    MIDIテンポ変更と拍子変更イベントに従って強拍の位置のリストを返します。

    パラメータ

    • start_time (float): 最初の強拍の位置(秒単位)。

    戻り値

    • downbeats (np.ndarray): 強拍の位置(秒単位)。
  • get_onsets()

    すべての楽器のすべての音符のオンセットの時間のソートされたリストを返します。重複するエントリがあるかもしれません。

    戻り値

    • onsets (np.ndarray): オンセットの位置(秒単位)。
  • get_piano_roll(fs=100, times=None, pedal_threshold=64)

    MIDIデータのピアノロール行列を計算します。

    パラメータ

    • fs (int): 列のサンプリング周波数。つまり、各列は1./fs秒ごとに間隔を空けて配置されます。
    • times (np.ndarray): ピアノロールの各列の開始時間。デフォルトはNoneで、np.arange(0, get_end_time(), 1./fs)です。
    • pedal_threshold (int): コントロールチェンジ64(サステインペダル)メッセージの値がこの値未満の場合、ペダルオフとして反映されます。ペダルはピアノロールの音符の延長として反映されます。Noneの場合、CC64メッセージは無視されます。デフォルトは64です。

    戻り値

    • piano_roll (np.ndarray, shape=(128, times.shape)): 楽器を横断して平坦化されたMIDIデータのピアノロール。
  • get_pitch_class_histogram(use_duration=False, use_velocity=False, normalize=True)

    ピッチクラスのヒストグラムを計算します。

    パラメータ

    • use_duration (bool): ノートの持続時間によって頻度を重み付けします。
    • use_velocity (bool): ノートのベロシティによって頻度を重み付けします。
    • normalize (bool): ヒストグラムを正規化して、ビン値の合計が1になるようにします。

    戻り値

    • histogram (np.ndarray, shape=(12,)): すべてのトラックのピッチクラスのヒストグラム。持続時間またはベロシティによる重み付けがオプションです。
  • get_pitch_class_transition_matrix(normalize=False, time_thresh=0.05)

    すべての楽器のピッチクラス遷移行列の合計を計算します。ノートの終わりが他の任意のノートの開始からtime_thresh秒以内の場合に遷移が追加されます。

    パラメータ

    • normalize (bool): 行列の合計が1になるように遷移行列を正規化します。
    • time_thresh (float): 遷移を追加するためのノートの開始と他の任意のノートの終了時間との間の最大時間閾値(秒)。

    戻り値

    • pitch_class_transition_matrix (np.ndarray, shape=(12,12)): ピッチクラス遷移行列。
  • get_chroma(fs=100, times=None, pedal_threshold=64)

    クロマベクトルのシーケンスとしてMIDIデータを取得します。

    パラメータ

    • fs (int): 列のサンプリング周波数。つまり、各列は1./fs秒ごとに間隔を空けて配置されます。
    • times (np.ndarray): ピアノロールの各列の開始時間。デフォルトはNoneで、np.arange(0, get_end_time(), 1./fs)です。
    • pedal_threshold (int): コントロールチェンジ64(サステインペダル)メッセージの値がこの値未満の場合、ペダルオフとして反映されます。ペダルはピアノロールの音符の延長として反映されます。Noneの場合、CC64メッセージは無視されます。デフォルトは64です。

    戻り値

    • piano_roll (np.ndarray, shape=(12, times.shape)): 楽器を横断して平坦化されたMIDIデータのクロマグラム。
  • synthesize(fs=44100, wave=<ufunc 'sin'>)

    いくつかの波形を使用してパターンを合成します。ドラムトラックは無視されます。

    パラメータ

    • fs (int): 合成されたオーディオ信号のサンプリングレート。
    • wave (function): 周期的な波形を返す関数。例えば、np.sinscipy.signal.squareなど。

    戻り値

    • synthesized (np.ndarray): fsで合成されたMIDIデータの波形。
  • fluidsynth(fs=44100, sf2_path=None)

    fluidsynthを使用して合成します。

    パラメータ

    • fs (int): 合成するサンプリングレート。
    • sf2_path (str): .sf2ファイルへのパス。デフォルトはNoneで、pretty_midiに含まれるTimGM6mb.sf2ファイルを使用します。

    戻り値

    • synthesized (np.ndarray): fsで合成されたMIDIデータの波形。
  • tick_to_time(tick)

    self.__tick_to_timeを使用して絶対ティックから秒単位の時間に変換します。

    パラメータ

    • tick (int): 変換する絶対ティック。

    戻り値

    • time (float): ティックの時間(秒単位)。
  • time_to_tick(time)

    self._tick_scalesを使用して秒単位の時間から絶対ティックに変換します。

    パラメータ

    • time (float): 時間(秒単位)。

    戻り値

    • tick (int): 提供された時間に対応する絶対ティック。
  • adjust_times(original_times, new_times)

    MIDIオブジェクトのイベントのタイミングを調整します。original_timesnew_timesのパラメータはマッピングを定義し、もしイベントが元々original_times[n]の時間に発生していた場合、new_times[n]の時間に発生するように移動されます。イベントがoriginal_timesの時間に正確に発生しない場合、そのタイミングは線形に補間されます。

    パラメータ

    • original_times (np.ndarray): マッピング元の時間。
    • new_times (np.ndarray): マッピング先の新しい時間。
  • remove_invalid_notes()

    終了時間が開始時間より前または同じであるノートを削除します。

  • write(filename)

    MIDIデータを.midファイルに書き出します。

    パラメータ

    • filename (str または file): .midファイルを書き出すパスまたはファイル。

pretty_midi.Instrument

class pretty_midi.Instrument(program, is_drum=False, name='')

pretty_midi.Instrumentは、単一のインストゥルメント(楽器)のイベント情報を保持するためのオブジェクトです。

  • パラメータ

    • program (int): MIDIプログラム番号(インストゥルメントのインデックス)、範囲は[0, 127]です。
    • is_drum (bool): このインストゥルメントがドラム(チャンネル9)かどうか。
    • name (str): インストゥルメントの名前。
  • 属性

    • program (int): このインストゥルメントのプログラム番号。
    • is_drum (bool): このインストゥルメントがドラム(チャンネル9)かどうか。
    • name (str): インストゥルメントの名前。
    • notes (list): pretty_midi.Noteオブジェクトのリスト。
    • pitch_bends (list): pretty_midi.PitchBendオブジェクトのリスト。
    • control_changes (list): pretty_midi.ControlChangeオブジェクトのリスト。
  • __init__(program, is_drum=False, name='')

    インストゥルメントを作成します。

  • get_onsets()

    このインストゥルメントによって演奏されたすべての音符のオンセットを取得します。重複が含まれる場合があります。

    戻り値

    • onsets (np.ndarray): すべての音符のオンセットのリスト。
  • get_piano_roll(fs=100, times=None, pedal_threshold=64)

    このインストゥルメントのピアノロール行列を計算します。

    パラメータ

    • fs (int): 列のサンプリング周波数。つまり、各列は1./fs秒ごとに間隔を空けて配置されます。
    • times (np.ndarray): ピアノロールの各列の開始時間。デフォルトはNoneで、np.arange(0, get_end_time(), 1./fs)です。
    • pedal_threshold (int): コントロールチェンジ64(サステインペダル)メッセージの値がこの値未満の場合、ペダルオフとして反映されます。ペダルはピアノロールの音符の延長として反映されます。Noneの場合、CC64メッセージは無視されます。デフォルトは64です。

    戻り値

    • piano_roll (np.ndarray, shape=(128, times.shape)): このインストゥルメントのピアノロール。
  • get_chroma(fs=100, times=None, pedal_threshold=64)

    このインストゥルメントからクロマベクトルのシーケンスを取得します。

    パラメータ

    • fs (int): 列のサンプリング周波数。つまり、各列は1./fs秒ごとに間隔を空けて配置されます。
    • times (np.ndarray): ピアノロールの各列の開始時間。デフォルトはNoneで、np.arange(0, get_end_time(), 1./fs)です。
    • pedal_threshold (int): コントロールチェンジ64(サステインペダル)メッセージの値がこの値未満の場合、ペダルオフとして反映されます。ペダルはピアノロールの音符の延長として反映されます。Noneの場合、CC64メッセージは無視されます。デフォルトは64です。

    戻り値

    • piano_roll (np.ndarray, shape=(12, times.shape)): このインストゥルメントのクロマグラム。
  • get_end_time()

    このインストゥルメントのイベントの終了時間を返します。

    戻り値

    • end_time (float): 最後のイベントの時間(秒単位)。
  • get_pitch_class_histogram(use_duration=False, use_velocity=False, normalize=False)

    このインストゥルメントのピッチクラスの頻度を計算します。持続時間またはベロシティによる重み付けがオプションです。

    パラメータ

    • use_duration (bool): ノートの持続時間によって頻度を重み付けします。
    • use_velocity (bool): ノートのベロシティによって頻度を重み付けします。
    • normalize (bool): ヒストグラムを正規化して、ビン値の合計が1になるようにします。

    戻り値

    • histogram (np.ndarray, shape=(12,)): 現在のインストゥルメントのピッチクラスのヒストグラム。持続時間またはベロシティによる重み付けがオプションです。
  • get_pitch_class_transition_matrix(normalize=False, time_thresh=0.05)

    このインストゥルメントのピッチクラス遷移行列を計算します。ノートの終わりが他の任意のノートの開始からtime_thresh秒以内の場合に遷移が追加されます。

    パラメータ

    • normalize (bool): 行列の合計が1になるように遷移行列を正規化します。
    • time_thresh (float): 遷移を追加するためのノートの開始と他の任意のノートの終了時間との間の最大時間閾値(秒)。

    戻り値

    • transition_matrix (np.ndarray, shape=(12,12)): ピッチクラス遷移行列。
  • remove_invalid_notes()

    終了時間が開始時間より前または同じであるノートを削除します。

  • synthesize(fs=44100, wave=<ufunc 'sin'>)

    いくつかの波形を使用してインストゥルメントの音符を合成します。ドラムの場合、ゼロを返します。

    パラメータ

    • fs (int): 合成されたオーディオ信号のサンプリングレート。
    • wave (function): 周期的な波形を返す関数。例えば、np.sinscipy.signal.squareなど。

    戻り値

    • synthesized (np.ndarray): fsで合成されたインストゥルメントの音符の波形。
  • fluidsynth(fs=44100, sf2_path=None)

    fluidsynthを使用して合成します。

    パラメータ

    • fs (int): 合成するサンプリングレート。
    • sf2_path (str): .sf2ファイルへのパス。デフォルトはNoneで、pretty_midiに含まれるTimGM6mb.sf2ファイルを使用します。

    戻り値

    • synthesized (np.ndarray): fsで合成されたMIDIデータの波形。

pretty_midi.Note

class pretty_midi.Note(velocity, pitch, start, end)

pretty_midi.Noteは、ノート(音符)イベントを表します。

  • パラメータ

    • velocity (int): ノートのベロシティ。
    • pitch (int): ノートのピッチ。MIDIノート番号として。
    • start (float): ノートオンの時間。絶対時間で秒単位。
    • end (float): ノートオフの時間。絶対時間で秒単位。
  • __init__(velocity, pitch, start, end)

    ノートを作成します。

  • get_duration()

    ノートの持続時間を秒単位で取得します。

pretty_midi.PitchBend

class pretty_midi.PitchBend(pitch, time)

pretty_midi.PitchBendは、ピッチベンドイベントを表します。

  • パラメータ

    • pitch (int): MIDIピッチベンド量。範囲は[-8192, 8191]。
    • time (float): ピッチベンドが発生する時間。
  • __init__(pitch, time)

    ピッチベンドを作成します。

pretty_midi.ControlChange

class pretty_midi.ControlChange(number, value, time)

pretty_midi.ControlChangeは、コントロールチェンジイベントを表します。

  • パラメータ

    • number (int): コントロールチェンジ番号。範囲は[0, 127]。
    • value (int): コントロールチェンジの値。範囲は[0, 127]。
    • time (float): コントロールチェンジが発生する時間。
  • __init__(number, value, time)

    コントロールチェンジを作成します。

pretty_midi.TimeSignature

class pretty_midi.TimeSignature(numerator, denominator, time)

pretty_midi.TimeSignatureは、拍子記号イベントを格納するコンテナで、拍子記号の分子、分母、イベントの発生時間(秒単位)を含みます。

  • 3.14秒で6/8拍子のTimeSignatureオブジェクトをインスタンス化する:

    ts = TimeSignature(6, 8, 3.14)
    print(ts)
    # 出力: 6/8 at 3.14 seconds
    
  • 属性

    • numerator (int): 拍子記号の分子。
    • denominator (int): 拍子記号の分母。
    • time (float): イベントの発生時間(秒単位)。
  • __init__(numerator, denominator, time)

    拍子記号を作成します。

pretty_midi.KeySignature

class pretty_midi.KeySignature(key_number, time)

pretty_midi.KeySignatureは、調号とイベントの発生時間(秒単位)を含みます。メジャーとマイナーの調のみをサポートします。

  • 3.14秒でC#マイナーのKeySignatureオブジェクトをインスタンス化する:

    ks = KeySignature(13, 3.14)
    print(ks)
    # 出力: C# minor at 3.14 seconds
    
  • 属性

    • key_number (int): 調号番号。がメジャー、がマイナー。例えば、0はCメジャー、12はCマイナーです。
    • time (float): イベントの発生時間(秒単位)。
  • __init__(key_number, time)

    調号を作成します。

pretty_midi.Lyric

class pretty_midi.Lyric(text, time)

pretty_midi.Lyricは、タイムスタンプ付きの歌詞テキストを表します。

  • 属性

    • text (str): 歌詞のテキスト。
    • time (float): 歌詞の発生時間(秒単位)。
  • __init__(text, time)

    歌詞を作成します。

pretty_midi.Text

class pretty_midi.Text(text, time)

pretty_midi.Textは、タイムスタンプ付きのテキストイベントを表します。

  • 属性

    • text (str): テキスト。
    • time (float): イベントが発生する時間(秒単位)。
  • __init__(text, time)

    テキストイベントを作成します。

ユーティリティ関数

  • pretty_midi.key_number_to_key_name(key_number)

    キー番号をキー文字列に変換します。

    パラメータ

    • key_number (int): メジャーとマイナーのキーを表すためにピッチクラスを使用します。マイナーキーの場合は12のオフセットを加えます。例えば、Cメジャーは0、Cマイナーは12です。

    戻り値

    • key_name (str): '(root) (mode)'の形式でキー名を返します。例: 'Gb minor'。F#、G#、C#マイナーを除いて、フラットを優先します。
  • pretty_midi.key_name_to_key_number(key_string)

    キー名の文字列をキー番号に変換します。

    パラメータ

    • key_string (str): '(root) (mode)'の形式です。ここで、
      • (root) は ABCDEFG または abcdefg のいずれかです。小文字のrootはモード文字列が指定されていない場合にマイナーキーを示します。オプションでシャープを示す#またはフラットを示すbが指定できます。
      • (mode) はオプションで、メジャーの場合は ‘M’, ‘Maj’, ‘Major’, ‘maj’, ‘major’、マイナーの場合は ‘m’, ‘Min’, ‘Minor’, ‘min’, ‘minor’ のいずれかです。モードが指定されていない場合、rootが大文字ならメジャー、小文字ならマイナーと見なされます。

    戻り値

    • key_number (int): キーとそのモードを表す整数。0から11はCからBのメジャーキー、12から23はCからBのマイナーキーを表します。
  • pretty_midi.mode_accidentals_to_key_number(mode, num_accidentals)

    変化記号の数とモードをキー番号に変換します。

    パラメータ

    • mode (int): 0はメジャー、1はマイナーです。
    • num_accidentals (int): シャープの場合は正の数、フラットの場合は負の数を使用します。

    戻り値

    • key_number (int): キーとそのモードを表す整数。
  • pretty_midi.key_number_to_mode_accidentals(key_number)

    キー番号を変化記号の数とモードに変換します。

    パラメータ

    • key_number (int): pretty_midiで使用されるキー番号。

    戻り値

    • mode (int): 0はメジャー、1はマイナーです。
    • num_accidentals (int): 変化記号の数。正はシャープ、負はフラットです。
  • pretty_midi.qpm_to_bpm(quarter_note_tempo, numerator, denominator)

    四分音符毎分から分毎の拍数に変換します。

    パラメータ

    • quarter_note_tempo (float): 四分音符のテンポ。
    • numerator (int): 拍子の分子。
    • denominator (int): 拍子の分母。

    戻り値

    • bpm (float): 分毎の拍数。
  • pretty_midi.note_number_to_hz(note_number)

    MIDIノート番号をその周波数(Hz)に変換します。

    パラメータ

    • note_number (float): MIDIノート番号。小数も可能です。

    戻り値

    • note_frequency (float): ノートの周波数(Hz)。
  • pretty_midi.hz_to_note_number(frequency)

    周波数(Hz)をMIDIノート番号に変換します。

    パラメータ

    • frequency (float): ノートの周波数(Hz)。

    戻り値

    • note_number (float): MIDIノート番号。小数も可能です。
  • pretty_midi.note_name_to_number(note_name)

    ノート名(例: 'C#4')をMIDIノート番号に変換します。

    パラメータ

    • note_name (str): 上記の形式で説明されたノート名。

    戻り値

    • note_number (int): 提供されたノート名に対応するMIDIノート番号。
  • pretty_midi.note_number_to_name(note_number)

    MIDIノート番号をその名前に変換します(例: 'C#4')。

    パラメータ

    • note_number (int): MIDIノート番号。整数でない場合は四捨五入されます。

    戻り値

    • note_name (str): 提供されたMIDIノート番号の名前。
  • pretty_midi.note_number_to_drum_name(note_number)

    打楽器のMIDIノート番号を対応するドラム名に変換します。

    パラメータ

    • note_number (int): MIDIノート番号。整数でない場合は四捨五入されます。

    戻り値

    • drum_name (str): このノートの打楽器のドラム名。
  • pretty_midi.drum_name_to_note_number(drum_name)

    ドラム名を対応する打楽器のMIDIノート番号に変換します。

    パラメータ

    • drum_name (str): 一般的なMIDI標準に存在するドラムの名前。ドラムが見つからない場合はValueErrorが発生します。

    戻り値

    • note_number (int): このドラムに対応するMIDIノート番号。
  • pretty_midi.program_to_instrument_name(program_number)

    MIDIプログラム番号を対応する一般的なMIDI楽器名に変換します。

    パラメータ

    • program_number (int): MIDIプログラム番号。0から127の範囲です。

    戻り値

    • instrument_name (str): このプログラム番号に対応する楽器の名前。
  • pretty_midi.instrument_name_to_program(instrument_name)

    楽器名を対応する一般的なMIDIプログラム番号に変換します。

    パラメータ

    • instrument_name (str): 一般的なMIDI標準に存在する楽器の名前。楽器が見つからない場合はValueErrorが発生します。

    戻り値

    • program_number (int): この楽器に対応するMIDIプログラム番号。
  • pretty_midi.program_to_instrument_class(program_number)

    MIDIプログラム番号を対応する一般的なMIDI楽器クラスに変換します。

    パラメータ

    • program_number (int): MIDIプログラム番号。0から127の範囲です。

    戻り値

    • instrument_class (str): このプログラム番号に対応する楽器クラスの名前。
  • pretty_midi.pitch_bend_to_semitones(pitch_bend, semitone_range=2.0)

    MIDIピッチベンド値をセミトーン数に変換します。

    パラメータ

    • pitch_bend (int): MIDIピッチベンド量。[-8192, 8191]の範囲です。
    • semitone_range (float): +/-このセミトーン範囲に変換します。デフォルトは2.0で、一般的なMIDI標準の+/-2セミトーン範囲です。

    戻り値

    • semitones (float): このピッチベンド量に対応するセミトーン数。
  • pretty_midi.semitones_to_pitch_bend(semitones, semitone_range=2.0)

    セミトーン値を対応するMIDIピッチベンド整数に変換します。

    パラメータ

    • semitones (float): ピッチベンドのセミトーン数。
    • semitone_range (float): +/-このセミトーン範囲に変換します。デフォルトは2.0で、一般的なMIDI標準の+/-2セミトーン範囲です。

    戻り値

    • pitch_bend (int): MIDIピッチベンド量。[-8192, 8191]の範囲です。

Discussion