pytakt.event module

このモジュールには、イベントに関するクラス群が定義されています。 これらのイベントの多くは、標準MIDIファイルで定義されたイベントを 基にしています。

midimsg_size(status) int

MIDIメッセージのステータスバイトからメッセージの長さを求めます。

Parameters:

status (int) – MIDIステータスバイトの値

Returns:

メッセージの長さ

message_to_event(msg, time, tk, encoding='utf-8', errhdr='') Event

各クラスの to_message メソッドが返す形式のバイト列を受け取って、 それを適切なクラスのイベントへ変換します (LoopBackEventを除く)。

Parameters:
  • msg (bytes, bytearray, or iterable of int) – 入力バイト列

  • time (ticks) – イベントの時刻

  • tk (int) – トラック番号

  • encoding (str or None) – テキストイベントの持つ文字列が、バイト列中で どのようにエンコーディングされているかを指定します。None のときは、バイト列のままのテキストイベントを生成します。

  • errhdr (str, optional) – エラー、警告メッセージの先頭文字列

Returns:

作成されたイベント

class Event(t, tk, dt=0, **kwargs)

Bases: object

すべてのイベントの基底クラスです。

インスタンスの属性

t

ティック単位で表されたイベントの時刻

Type:

ticks

tk

トラック番号 (0から始まる)

Type:

int

dt

楽譜上の時刻と演奏上の時刻との差を表し、 演奏のときは t にこの値(単位はティック)を加えた時刻が 用いられます。dt値の大きさには制限があります (pytakt.constants.MAX_DELTA_TIME を参照)。

Type:

ticks

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • tk (int) – tk属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。

演算規則

  • イベントどうしの等価比較(‘==’)は、クラスが一致し、かつすべての属性値が 等価であるときのみ真となります。

  • 左オペランドを文字列、イベントを右オペランドにして ‘|’ 演算子を用いると、 左オペランドは無視され、イベントそのものの値となります。これは、 showtext() で ‘|’ の左側にある小節番号等を無視するのに利用されます。


copy() Event

複製されたイベントを返します(浅いコピー)。

update(**kwargs) Event

kwargs の代入記述に従って属性を追加・変更します。

Returns:

self

tostr(timereprfunc=<function std_time_repr>) str

イベントを文字列に変換したものを返します。

Parameters:

timereprfunc (function) – 時間の値を文字列に変換する関数。 デフォルトでは小数点以下5桁に丸められた表現を返す 関数になります。

is_pitch_bend() bool

ピッチベンドイベントのとき真を返します。

is_key_pressure() bool

キープレッシャーイベントのとき真を返します。

is_channel_pressure() bool

チャネルプレッシャーイベントのとき真を返します。

is_program_change() bool

プログラムチェンジイベントのとき真を返します。

is_all_notes_off() bool

オールノートオフイベント(値が0の123番のコントロールチェンジ イベント)のとき真を返します。

is_marker() bool

マーカーイベント(6番のメタイベント)のとき真を返します。

is_end_of_track() bool

トラック終了イベント(47番のメタイベント)のとき真を返します。

is_text_event() bool

テキストイベント(1~15番のメタイベント)のとき真を返します。

to_message(errhdr='') Union[bytes, bytearray]

イベントをバイト列に変換します。

Parameters:

errhdr (str, optional) – エラー、警告メッセージの先頭文字列

ptime() Union[int, float, Fraction]

演奏上の時刻 (t属性値とdt属性値の和) を返します。

class NoteEventClass(*args, **kwargs)

Bases: Event

NoteEvent, NoteOnEvent, および NoteOffEvent を総括した基底クラスです。


class NoteEvent(t, n, L, v=80, nv=None, du=None, tk=1, ch=1, dt=0, **kwargs)

Bases: NoteEventClass

音符を表すイベントのクラスです。1対のノートオンとノートオフに相当します。

インスタンスの属性

ch

MIDIチャネル番号 (1から始まる)

Type:

int

n

MIDIノート番号

Type:

int or Pitch

L

ティック単位で表された楽譜上の音の長さ (音価)

Type:

ticks

v

MIDIベロシティ

Type:

int

nv

MIDIノートオフベロシティ。Noneならば、MIDI バイト列に変換したときにベロシティ0のノートオンが使用されます。

Type:

int or None

du

演奏時音長 (ノートオンとノートオフの時間差) を表します。この属性が無いとき、L属性と同じ値であるとみなされます。

Type:

ticks, optional

継承された他の属性

t, tk, dt

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • n (int or Pitch) – n属性の値

  • L (ticks) – L属性の値

  • v (int, optional) – v属性の値

  • nv (int or None, optional) – nv属性の値

  • du (ticks, optional) – du属性の値

  • tk (int, optional) – tk属性の値

  • ch (int, optional) – ch属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。


copy() Event

複製されたイベントを返します(浅いコピー)。

get_du() Union[int, float, Fraction]

du属性の値(なければLの値)を返します。

offtime() Union[int, float, Fraction]

ノートオフ時刻(t属性値とL属性値の和)を返します。

pofftime() Union[int, float, Fraction]

演奏上のノートオフ時刻を返します。

to_message(errhdr='') Union[bytes, bytearray]

イベントをバイト列に変換します。

Parameters:

errhdr (str, optional) – エラー、警告メッセージの先頭文字列

class NoteOnEvent(t, n, v=80, tk=1, ch=1, dt=0, **kwargs)

Bases: NoteEventClass

ノートオンイベントのクラスです。

インスタンスの属性

ch

MIDIチャネル番号 (1から始まる)

Type:

int

n

MIDIノート番号

Type:

int or Pitch

v

MIDIベロシティ

Type:

int

継承された他の属性

t, tk, dt

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • n (int or Pitch) – n属性の値

  • v (int, optional) – v属性の値

  • tk (int, optional) – tk属性の値

  • ch (int, optional) – ch属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。


copy() Event

複製されたイベントを返します(浅いコピー)。

to_message(errhdr='') Union[bytes, bytearray]

イベントをバイト列に変換します。

Parameters:

errhdr (str, optional) – エラー、警告メッセージの先頭文字列

class NoteOffEvent(t, n, nv=None, tk=1, ch=1, dt=0, **kwargs)

Bases: NoteEventClass

ノートオフイベントのクラスです。

インスタンスの属性

ch

MIDIチャネル番号 (1から始まる)

Type:

int

n

MIDIノート番号

Type:

int or Pitch

nv

MIDIノートオフベロシティ。Noneならば、MIDI バイト列に変換したときにベロシティ0のノートオンが使用されます。

Type:

int or None

継承された他の属性

t, tk, dt

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • n (int or Pitch) – n属性の値

  • nv (int or None, optional) – nv属性の値

  • tk (int, optional) – tk属性の値

  • ch (int, optional) – ch属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。


copy() Event

複製されたイベントを返します(浅いコピー)。

to_message(errhdr='') Union[bytes, bytearray]

イベントをバイト列に変換します。

Parameters:

errhdr (str, optional) – エラー、警告メッセージの先頭文字列

class CtrlEvent(t, ctrlnum, value, tk=1, ch=1, dt=0, **kwargs)

Bases: Event

コントローラ番号とコントロール値を持った制御イベントのクラスです。 これには、MIDIコントロールチェンジ、プログラムチェンジ、ピッチベンド、 チャネルプレッシャー、およびキープレッシャーが含まれます。 キープレッシャーについては専用のサブクラスが用意されていますので、 インスタンス生成の際にはそのコンストラクタを使用してください。

インスタンスの属性

ch

MIDIチャネル番号 (1から始まる)

Type:

int

ctrlnum

コントローラ番号を表し、下の意味を持ちます。

  • 0~127: MIDIコントロールチェンジ (value は0~127)

  • 128(C_BEND): MIDIピッチベンド (value は -8192~8191)

  • 129(C_KPR): MIDIキープレッシャー (KeyPressureEventを参照)

  • 130(C_CPR): MIDIチャネルプレッシャー (value は0~127)

  • 131(C_PROG): MIDIプログラムチェンジ (value は1~128)

  • それ以外: 内部処理用

Type:

int

value

コントロール値

Type:

int, etc.

継承された他の属性

t, tk, dt

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • ctrlnum (int) – ctrlnum属性の値

  • value (int, etc.) – value属性の値

  • tk (int, optional) – tk属性の値

  • ch (int, optional) – ch属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。


copy() Event

複製されたイベントを返します(浅いコピー)。

to_message(errhdr='') Union[bytes, bytearray]

イベントをバイト列に変換します。

Parameters:

errhdr (str, optional) – エラー、警告メッセージの先頭文字列

class KeyPressureEvent(t, n, value, tk=1, ch=1, dt=0, **kwargs)

Bases: CtrlEvent

キープレッシャーイベントのクラスです。

インスタンスの属性

n

MIDIノート番号

Type:

int or Pitch

value

コントロール値(0~127)

Type:

int or float

継承された他の属性

t, tk, dt, ch, ctrlnum

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • n (int or Pitch) – n属性の値

  • value (int, etc.) – value属性の値

  • tk (int, optional) – tk属性の値

  • ch (int, optional) – ch属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。


copy() Event

複製されたイベントを返します(浅いコピー)。

to_message(errhdr='') Union[bytes, bytearray]

イベントをバイト列に変換します。

Parameters:

errhdr (str, optional) – エラー、警告メッセージの先頭文字列

class SysExEvent(t, value, tk=1, dt=0, **kwargs)

Bases: Event

システムエクスクルーシブメッセージのイベントです。

インスタンスの属性

value

先頭の0xf0および 末尾の0xf7を明示的に含むメッセージの内容。 1つのメッセージを複数のSysExEventに分割することは可能で、 その場合は、最初のイベントに0xf0、最後のイベントに0xf7を置きます。

Type:

bytes, bytearray, or iterable of int

継承された他の属性

t, tk, dt

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • value (bytes, bytearray, or iterable of int) – value属性の値

  • tk (int, optional) – tk属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。


copy() Event

複製されたイベントを返します(浅いコピー)。

to_message(errhdr='') Union[bytes, bytearray]

イベントをバイト列(valueの先頭に更に0xf0を加えたもの)に変換します。

Parameters:

errhdr (str, optional) – エラー、警告メッセージの先頭文字列

class MetaEvent(t, mtype, value, tk=1, dt=0, **kwargs)

Bases: Event

標準MIDIファイルで定義されているメタイベントのクラスです。 これには、テキストイベント、調号イベント、拍子イベント、 テンポ変更イベント、トラック終了イベントなどが含まれます。

インスタンスの属性

mtype

メタイベントの種類 (0~127)

Type:

int

value

メタイベントのデータ。mtypeが1~15のときは、この属性は str型である ことが推奨されます。mtypeが M_KEYSIG (調号イベント) であるときは、 この属性はKey型でなければなりません。mtypeが M_TEMPO (テンポ変更イベント) であるときは、この属性は int または float型 でなければなりません。それ以外のメタイベントでは、bytes, bytearray もしくは整数のイテラブルが推奨されます。

Type:

bytes, bytearray, str, Key, int, float, or iterable of int

継承された他の属性

t, tk, dt

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • mtype (int) – mtype属性の値

  • value (bytes, bytearray, str, Key, int, float, or iterable of int) – value属性の値

  • tk (int, optional) – tk属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。

Notes

調号イベント、拍子イベント、およびテンポ変更イベントについては それぞれ専用のサブクラスが用意されています。 インスタンス生成の際、テンポ変更イベントについては専用のサブクラス (TempoEvent) を使用してください。 調号イベントと拍子イベントについては、このクラスのコンストラクタで 作成することも可能ですが、各サブクラスのコンストラクタを用いた方が より便利です。


copy() Event

複製されたイベントを返します(浅いコピー)。

to_message(errhdr='', encoding='utf-8') Union[bytes, bytearray]

イベントをバイト列(長さ情報を除いた標準MIDIファイル中のデータ)に 変換します。

Parameters:
  • errhdr (str, optional) – エラー、警告メッセージの先頭文字列

  • encoding (str) – テキストイベントが持つ文字列を、バイト列中で どのようにエンコーディングするかを指定します。

class KeySignatureEvent(t, value, tk=0, dt=0, **kwargs)

Bases: MetaEvent

調号イベントのクラスです。

継承された属性

t, tk, dt, mtype, value

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • value (Key, int, or str) – Keyコンストラクタの第1引数

  • tk (int, optional) – tk属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。


to_message(errhdr='', encoding='utf-8') Union[bytes, bytearray]

イベントをバイト列(長さ情報を除いた標準MIDIファイル中のデータ)に 変換します。

Parameters:
  • errhdr (str, optional) – エラー、警告メッセージの先頭文字列

  • encoding (str) – テキストイベントが持つ文字列を、バイト列中で どのようにエンコーディングするかを指定します。

class TimeSignatureEvent(t, num, den, cc=None, tk=0, dt=0, **kwargs)

Bases: MetaEvent

拍子イベントのクラスです。

継承された属性

t, tk, dt, mtype, value

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • num (int) – 分子の値

  • den (int) – 分母の値

  • cc (int, optional) – メトロノームクリックの間隔を四分音符の1/24を単位 として表したもの。デフォルトでは、numden から自動的に 推測されます。

  • tk (int, optional) – tk属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。

Examples

時刻が0で4/4拍子の場合、TimeSignatureEvent(0, 4, 4)


numerator() int

分子の値を返します。

denominator() int

分母の値を返します。

num_den() Tuple[int, int]

分子と分母からなる2要素タプルを返します。

get_cc() int

メトロノームクリックの間隔(四分音符の1/24単位)を返します。

tostr(timereprfunc=<function std_time_repr>) str

イベントを文字列に変換したものを返します。

Parameters:

timereprfunc (function) – 時間の値を文字列に変換する関数。 デフォルトでは小数点以下5桁に丸められた表現を返す 関数になります。

beat_length() Union[int, float, Fraction]

1拍の長さをティック単位で返します。

measure_length() Union[int, float, Fraction]

1小節の長さをティック単位で返します。

class TempoEvent(t, value, tk=0, dt=0, **kwargs)

Bases: MetaEvent

テンポ変更イベントのクラスです。

インスタンスの属性

value

1分あたりの4分音符数で表されたテンポ値 (最低値は4)

Type:

int or float

継承された他の属性

t, tk, dt, mtype, value

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • value (int or float) – value属性の値

  • tk (int, optional) – tk属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。


copy() Event

複製されたイベントを返します(浅いコピー)。

to_message(errhdr='', encoding='utf-8') Union[bytes, bytearray]

イベントをバイト列(長さ情報を除いた標準MIDIファイル中のデータ)に 変換します。

Parameters:
  • errhdr (str, optional) – エラー、警告メッセージの先頭文字列

  • encoding (str) – テキストイベントが持つ文字列を、バイト列中で どのようにエンコーディングするかを指定します。

class LoopBackEvent(t, value, tk=0, dt=0, **kwargs)

Bases: Event

ループバックイベントのクラスです。

インスタンスの属性

value

イベントを区別するための任意のデータ

継承された他の属性

t, tk, dt

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • value (str) – value属性の値

  • tk (int, optional) – tk属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。


copy() Event

複製されたイベントを返します(浅いコピー)。

to_message(errhdr='') Union[bytes, bytearray]

イベントをバイト列に変換します。

Parameters:

errhdr (str, optional) – エラー、警告メッセージの先頭文字列

class XmlEvent(t, xtype, value, tk=1, dt=0, **kwargs)

Bases: Event

五線譜のための追加情報を記述したイベントのクラスです。

インスタンスの属性

xtype

情報の種類を表す文字列

Type:

str

value

情報の内容データ

継承された他の属性

t, tk, dt

コンストラクタ引数

Parameters:
  • t (ticks) – t属性の値

  • xtype (str) – xtype属性の値

  • value – value属性の値

  • tk (int, optional) – tk属性の値

  • dt (ticks, optional) – dt属性の値

  • kwargs – イベントに対して追加の属性を指定します。

有効なイベントの一覧

xtype

desc.

value

optional attrs.

‘clef’

音部記号

‘G’, ‘F’, ‘C’ ‘percussion’, ‘TAB’, ‘jianpu’, ‘none’

line(int), octave_change (int)

‘barline’

小節区切り

‘dashed’, ‘dotted’, ‘heavy’, ‘heavy-heavy’, ‘heavy-light’, ‘light-heavy’, ‘light-light’, ‘none’, ‘regular’, ‘short’, ‘tick’, ‘double’, ‘final’, ‘repeat-start’, ‘repeat-end’

‘chord’

コード記号

Chord

‘text’

汎用テキスト

str

‘pagelayout’

ページレイア ウト情報

なし

height, width, topmargin, bottommargin, leftmargin, rightmargin (millimeters); scaling (mm/staffline)

‘staffgroup’

段のグルーピ ング

list, tuple or set of int, ‘brace’, ‘bracket’, ‘square’, ‘line’ or ‘none’ [1]

‘transpose’

記譜時の移調

Interval

[1] トラック番号のコレクション(ネスト可能)によって、段のグルーピング を表します。’brace’ 等の文字列は段のグルーピングに使われるシンボルの 形状を表し、コレクションがlistのときは ‘bracket’, tupleのときは ‘sqaure’, setのときは ‘brace’ がそれぞれデフォルトになります。 非デフォルトのシンボルを指定するには (‘line’, 3, 4) のように要素に 文字列を含めます。コレクションがsetのときは、ピアノの右手と左手の ような、パート内の段 (stave) として扱われます。


copy() Event

複製されたイベントを返します(浅いコピー)。

to_message(errhdr='') Union[bytes, bytearray]

イベントをバイト列に変換します。

Parameters:

errhdr (str, optional) – エラー、警告メッセージの先頭文字列