pytakt.context module¶
このモジュールには、Contextクラスおよびそれに関連した関数が定義されています。
- class Context(dt=0, L=480, v=80, nv=None, duoffset=0, durate=100, tk=1, ch=1, o=4, key=0, effectors=[], **kwargs)¶
Bases:
objectContext クラスのオブジェクト (コンテキスト) は、sc モジュールで 定義されている関数および mml() 関数によって参照されるパラメータ情報を 集めたものです。
コンテキストは with 構文によって、切り替えることができます。例えば:
mycontext = Context(ch=2, v=50) with mycontext: ...
とすると、with の中では mycontext が有効になり、with を抜けると元の コンテキストに戻ります。
コンテキストが持っている属性の値は
mycontext.ch=3のようにして変更でき ますが、新しい属性を追加するには addattr() メソッドを使う必要があります。sc モジュールで定義されている関数および mml() 関数は、 Context クラスのメソッドとしても使用でき、コンテキストを指定した スコア生成が可能です (例:
mycontext.note(C4)、mycontext.mml('CDE')など)。マルチスレッド環境でも安全に使用できるように、現在有効なコンテキストは スレッドごと別々に管理されています。新しいスレッドが生成されたとき、 そのスレッドのコンテキストは常にデフォルトコンテキスト (Context() で 得られるコンテキスト) になります。
インスタンスの属性
- dt¶
生成されるイベントの dt 属性の値 (楽譜上の時刻と 演奏上の時刻との差) を指定します。
- Type:
ticks
- tk¶
生成されるイベントの tk 属性の値 (トラック番号) を指定します。
- Type:
int
- ch¶
生成されるイベントの ch 属性の値 (MIDIチャネル番号) を指定します。
- Type:
int
- v¶
生成される NoteEvent の v 属性の値 (ベロシティ) を指定 します。
- Type:
int
- nv¶
生成される NoteEvent の nv 属性の値 (ノートオフ ベロシティ) を指定します。
- Type:
int or None
- L¶
生成される NoteEvent の L 属性の値を指定します。 これは楽譜上の音価をティック単位で表したものに相当します。 また、rest() 関数における休符の長さ指定にも使われます。
- Type:
ticks
- duoffset¶
演奏時音長 (ノートオンとノートオフ の時間差、いわゆるゲートタイム) のオフセット値、もしくは L 属性 の値からその値を得る関数を保持します。 下の durate とともに、演奏時音長を決めるのに使われます。
- Type:
ticks or function
- durate¶
演奏時音長に対する加算値を音価に対する百分率で 指定します。演奏時音長は、上の duoffsetとともに、下式によって 決定されます。
演奏時音長 = duoffset + L * durate / 100 (duoffset が int/float のとき)
演奏時音長 = duoffset(L) + L * durate / 100 (duoffset が関数のとき)
演奏時音長が負の場合は 0 に修正されます。
note() 関数は、上の演奏時音長を NoteEvent の du 属性に設定します。 (ただし、L属性値と同じ値の場合は省略されます)。
- Type:
int or float
- o¶
オクターブを表す整数(4が中央ハから始まるオクターブ)。 これは mml() 関数でのみ使用されます。
- Type:
int
- key¶
自動的にシャープやフラットをつけるための調 を
Keyクラスのオブジェクト、もしくは Key()コンストラクタの第1引数を指定します。 これは mml() 関数でのみ使用されます。- Type:
Key, int, or str
- effectors¶
スコア変換を行う呼び出し可能 オブジェクトのリストです。scモジュールの関数、mml関数、safe_mml 関数、およびMML内の各基本コマンドによって生成されるスコアに対して、 このリストに含まれる呼び出し可能オブジェクト(典型的にはEffector インスタンス)が先頭から順に適用されます。
- Type:
list of callable objects
疑似属性
各音符に対する演奏時音長の指定を容易にするため、下の2つの疑似属性が 提供されています。 これらは通常のインスタンス属性と同じように値の読み出しや書き込みを行え ますが、属性として登録はされていません。
- du
演奏時音長を表しています。 読み出すと演奏時音長 (上の durate の項を式を参照) が得られます。 値xを書き込むと、xを duoffset にセットするのと同時に、durate を 0 (ただし、xが負の場合は 100) にセットします。
- 使用例:
note(C4, du=120): 音価(L属性値)にかかわらず演奏時音長を120ティックに固定します。note(C4, du=-30): 演奏時音長をL属性値より30ティック少ない値に設定し、音符間のギャップを30ティックに保ちます。
Type:: ticks
- dr
演奏時音長の音価に対する百分率を表しています。 読み出すと durate 属性の値が得られます。 値を書き込むと、その値を durate にセットするのと同時に、duoffset を 0 に設定します。
- 使用例:
note(C4, dr=50): 演奏時音長を音価の50%に設定します (いわゆるスタッカート演奏に相当します)。
Type:: int or float
コンストラクタ引数
- Parameters:
dt – 同名の属性値を指定します。
L – 同名の属性値を指定します。
v – 同名の属性値を指定します。
nv – 同名の属性値を指定します。
duoffset – 同名の属性値を指定します。
durate – 同名の属性値を指定します。
tk – 同名の属性値を指定します。
ch – 同名の属性値を指定します。
o – 同名の属性値を指定します。
key – 同名の属性値を指定します。
effectors – effector属性の値を指定します。 属性にはリストのコピーが格納されます。
kwargs – コンテキストに対する追加の属性を指定します。
- property du¶
- property dr¶
- addattr(name, value=None) None¶
コンテキストに新たな属性を追加します。
- Parameters:
name (str) – 属性の名前
value (any) – 属性の初期値
- has_attribute(name) bool¶
name がコンテキストの属性(疑似属性を含む)であれば真を返します。 メソッド名は対象にしない点において、hasattr(self, name)とは異なります。
- Parameters:
name (str) – 属性の名前
- reset() None¶
すべての属性値を初期値 (デフォルトのコンストラクタ引数値) へ 戻します。
- keys() List[str]¶
属性名のリストを返します。
- items() List[Tuple[str, Any]]¶
属性名とその値の組のリストを返します。
- do(func, *args, **kwargs) Any¶
このコンテキストにおいて関数 func を実行し、その戻り値を 返します。
- Parameters:
args – func へ渡す引数。
kwargs – func へ渡す引数。
Examples
somecontext.do(lambda: note(C4) + note(D4))