🎼

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

に公開

はじめに

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

pretty_midi

pretty_midiは、MIDIデータを扱うためのユーティリティ関数やクラスを含んでおり、情報を変更したり抽出したりするのに適した形式で提供します。発表された研究プロジェクトでpretty_midiを使用する際は、以下のレポートを引用してください。

Colin Raffel and Daniel P. W. Ellis. Intuitive Analysis, Creation and Manipulation of MIDI Data with pretty_midi. In 15th International Conference on Music Information Retrieval Late Breaking and Demo Papers, 2014.

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)
    # チェロのInstrumentに追加
    cello.notes.append(note)
# PrettyMIDIオブジェクトにチェロのInstrumentを追加
cello_c_chord.instruments.append(cello)
# MIDIデータを書き出す
cello_c_chord.write('cello-C-chord.mid')

他の例は、ソースツリーの examples ディレクトリにあります。


pretty_midi.PrettyMIDI

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

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

パラメータ

  • midi_file (str または file) -- MIDIファイルへのパス、またはファイルポインタ。デフォルトはNoneで、これは resolutioninitial_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()

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

戻り値

  • tempos (np.ndarray) -- 推定されたテンポ(BPM)の配列。
  • probabilities (np.ndarray) -- 各テンポ推定値の確率の配列。

estimate_tempo()

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

戻り値

  • tempo (float) -- 推定されたテンポ(BPM)。

get_beats(start_time=0.0)

MIDIのテンポ変更に従った拍の位置のリストを返します。複合拍子 (分子が3より大きく、3の倍数であるもの) の場合、このメソッドは3番目ごとの分母音符を返します(例: 6/8または6/16拍子の場合、3番目ごとの8分音符または16分音符を返します)。その他の拍子の場合、このメソッドは全ての分母音符を返します(例: 3/4または4/4拍子の場合、全ての四分音符を返します)。

パラメータ

  • 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[0])) -- インストゥルメント全体で平坦化された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[0])) -- インストゥルメント全体で平坦化されたMIDIデータのクロマグラム。

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

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

パラメータ

  • fs (int) -- 合成されたオーディオ信号のサンプリングレート。
  • wave (function) -- 周期的な波形を返す関数 (例: np.sin, scipy.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_times および new_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='')

単一のインストゥルメントのイベント情報を保持するオブジェクト。

パラメータ

  • 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='')

Instrumentを作成します。

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[0])) -- このインストゥルメントのピアノロール。

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[0])) -- このインストゥルメントのクロマグラム。

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.sin, scipy.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)

音符イベント。

パラメータ

  • 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)

ピッチベンドイベント。

パラメータ

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

__init__(pitch, time)


pretty_midi.ControlChange

class pretty_midi.ControlChange(number, value, time)

コントロールチェンジイベント。

パラメータ

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

__init__(number, value, time)


pretty_midi.TimeSignature

class pretty_midi.TimeSignature(numerator, denominator, time)

拍子イベントのコンテナ。拍子の分子、分母、およびイベント時間(秒単位)を含みます。

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)

調号とイベント時間(秒単位)を含みます。majorおよびminorのみをサポートします。

3.14秒にC# minorのKeySignatureオブジェクトをインスタンス化する例:

>>> ks = KeySignature(13, 3.14)
>>> print(ks)
C# minor at 3.14 seconds

属性

  • key_number (int) -- [0, 11] がmajor、[12, 23] がminorに対応するキー番号。例えば、C Major は0、C minor は12です。
  • time (float) -- イベントの時間(秒単位)。

__init__(key_number, time)


pretty_midi.Lyric

class pretty_midi.Lyric(text, time)

タイムスタンプ付きの歌詞テキスト。

属性

  • text (str) -- 歌詞のテキスト。
  • time (float) -- 歌詞の時間(秒単位)。

__init__(text, time)


pretty_midi.Text

class pretty_midi.Text(text, time)

タイムスタンプ付きのテキストイベント。

属性

  • text (str) -- テキスト。
  • time (float) -- それが発生する時間(秒単位)。

__init__(text, time)


ユーティリティ関数

pretty_midi.key_number_to_key_name(key_number)

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

パラメータ

  • key_number (int) -- ピッチクラスを使用してmajorおよびminorを表します。minorの場合、12のオフセットが追加されます。例えば、C Major は0、C minor は12です。

戻り値

  • key_name (str) -- キー名 '(root) (mode)' の形式(例: 'Gb minor')。F# major、G# major、C# minorを除き、フラットが付くキーを優先します。

pretty_midi.key_name_to_key_number(key_string)

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

パラメータ

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

戻り値

  • key_number (int) -- キーとそのモードを表す整数。0から11までの整数は C major から B major までの major keys を表し、12から23までの整数は C minor から B minor までの minor keys を表します。

pretty_midi.mode_accidentals_to_key_number(mode, num_accidentals)

与えられた変化記号の数とモードをキー番号に変換します。

パラメータ

  • mode (int) -- 0 が major、1 が minorです。
  • num_accidentals (int) -- 正の数はシャープに使用され、負の数はフラットに使用されます。

戻り値

  • key_number (int) -- キーとそのモードを表す整数。

pretty_midi.key_number_to_mode_accidentals(key_number)

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

パラメータ

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

戻り値

  • mode (int) -- major の場合は 0、minor の場合は 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)を(小数も含む)音符番号に変換します。

パラメータ

  • frequency (float) -- 音符の周波数(Hz単位)。

戻り値

  • note_number (float) -- MIDI音符番号、小数でも可。

pretty_midi.note_name_to_number(note_name)

'(note)(accidental)(octave number)' の形式の音符名(例: 'C#4')をMIDI音符番号に変換します。

'(note)' は必須で、大文字小文字を区別しません。

'(accidental)' はナチュラル ('')、シャープ ('#')、フラット ('!' あるいは 'b') を使用します。

'(octave)''' の場合、0オクターブと見なされます。

パラメータ

  • note_name (str) -- 上記の形式の音符名。

戻り値

  • note_number (int) -- 提供された音符名に対応するMIDI音符番号。

注釈

Brian McFee 氏に感謝します。

pretty_midi.note_number_to_name(note_number)

MIDI音符番号を '(note)(accidental)(octave number)' の形式の音符名(例: 'C#4')に変換します。

パラメータ

  • note_number (int) -- MIDI音符番号。整数でない場合は丸められます。

戻り値

  • note_name (str) -- 指定されたMIDI音符番号の名前。

注釈

Brian McFee 氏に感謝します。

pretty_midi.note_number_to_drum_name(note_number)

打楽器インストゥルメントのMIDI音符番号を、General MIDI規格に従った対応するドラム名に変換します。

有効な範囲(音符35-81、0-indexed)外のMIDI音符番号は、空の文字列を返します。

パラメータ

  • note_number (int) -- MIDI音符番号。整数でない場合は丸められます。

戻り値

  • drum_name (str) -- 打楽器インストゥルメントのこの音符に対応するドラム名。

注釈

http://www.midi.org/techspecs/gm1sound.php を参照してください。

pretty_midi.drum_name_to_note_number(drum_name)

ドラム名を打楽器インストゥルメントの対応するMIDI音符番号に変換します。変換は大文字小文字、空白文字、非英数字を区別しません。

パラメータ

  • drum_name (str) -- General MIDI規格に存在するドラム名。ドラムが見つからない場合、ValueErrorが発生します。

戻り値

  • note_number (int) -- このドラムに対応するMIDI音符番号。

注釈

http://www.midi.org/techspecs/gm1sound.php を参照してください。

pretty_midi.program_to_instrument_name(program_number)

MIDIプログラム番号を対応するGeneral MIDIインストゥルメント名に変換します。

パラメータ

  • program_number (int) -- MIDIプログラム番号、0から127の間。

戻り値

  • instrument_name (str) -- このプログラム番号に対応するインストゥルメント名。

注釈

http://www.midi.org/techspecs/gm1sound.php を参照してください。

pretty_midi.instrument_name_to_program(instrument_name)

インストゥルメント名を対応するGeneral MIDIプログラム番号に変換します。変換は大文字小文字、空白文字、非英数字を区別しません。

パラメータ

  • instrument_name (str) -- General MIDI規格に存在するインストゥルメント名。インストゥルメントが見つからない場合、ValueErrorが発生します。

戻り値

  • program_number (int) -- このインストゥルメントに対応するMIDIプログラム番号。

注釈

http://www.midi.org/techspecs/gm1sound.php を参照してください。

pretty_midi.program_to_instrument_class(program_number)

MIDIプログラム番号を対応するGeneral MIDIインストゥルメントクラスに変換します。

パラメータ

  • program_number (int) -- MIDIプログラム番号、0から127の間。

戻り値

  • instrument_class (str) -- このプログラム番号に対応するインストゥルメントクラス名。

注釈

http://www.midi.org/techspecs/gm1sound.php を参照してください。

pretty_midi.pitch_bend_to_semitones(pitch_bend, semitone_range=2.0)

MIDIピッチベンド値(範囲 [-8192, 8191])を半音単位のベンド量に変換します。

パラメータ

  • pitch_bend (int) -- MIDIピッチベンド量、範囲は [-8192, 8191]
  • semitone_range (float) -- +/- この半音範囲に変換します。デフォルトは2.で、これはGeneral MIDI規格の +/-2 半音範囲です。

戻り値

  • semitones (float) -- このピッチベンド量に対応する半音数。

pretty_midi.semitones_to_pitch_bend(semitones, semitone_range=2.0)

半音値を対応するMIDIピッチベンド整数に変換します。

パラメータ

  • semitones (float) -- ピッチベンドの半音数。
  • semitone_range (float) -- +/- この半音範囲に変換します。デフォルトは2.で、これはGeneral MIDI規格の +/-2 半音範囲です。

戻り値

  • pitch_bend (int) -- MIDIピッチベンド量、範囲は [-8192, 8191]

Discussion