EventMap リファレンス
EventMap(触覚ファイル)は SDK の調整側で、発火側(play / stop)と分かれ、
event id だけで結ばれます。kit manifest(schema 2.0.0)を読み、各イベントの既定値を
持ちます。
import hapbeat
# 触覚ファイル(overlay)から(推奨。target/gain を per-event で持てる)em = hapbeat.EventMap.from_file("haptics.json")
# kit フォルダから(intensity/clip のみ。targeting なし)em = hapbeat.EventMap.from_kit("kits/my-kit")
# manifest を直接指定em = hapbeat.EventMap.from_manifest("kits/my-kit/my-kit-manifest.json")em = hapbeat.EventMap.from_manifest(parsed_dict) # dict でも可
# 手書き(command のみ・gain だけ)em = hapbeat.EventMap.from_dict({"sample-kit.sine_100hz": 0.5})from_file は 触覚ファイル(kit を参照する overlay)を読み、manifest の
intensity/clip に target / gain 上書きを重ねます(プロジェクト構成)。
from_kit / from_manifest(path) は kit_dir を覚え、clip モードの WAV を
<kit_dir>/stream-clips/<clip> から解決します。
EventDef のフィールド
Section titled “EventDef のフィールド”em.get(event_id) が返す EventDef:
| フィールド | 意味 |
|---|---|
event_id | イベント id |
intensity | 既定 gain(manifest の parameters.intensity、既定 1.0) |
loop | ループ再生か |
device_wiper | デバイス側ワイパー値(任意) |
streaming | True なら clip モード(stream_events 由来) |
clip | clip モードの WAV ファイル名(stream-clips/ 相対) |
target | 送信先アドレス(触覚ファイルで指定)。"" = ブロードキャスト |
mode | "clip"(streaming)/ "command" |
note | メモ |
play(id) の送信先は 呼び出し側 target= > EventDef.target(触覚ファイル)>
接続の default_target の順で解決されます。
主なメソッド
Section titled “主なメソッド”em.get("sample-kit.sine_100hz") # EventDef | Noneem.gain_for("sample-kit.sine_100hz") # 既定 gain(無ければ 1.0)em.ids() # 全 event id"sample-kit.sine_100hz" in em # 存在判定len(em) # 件数em.kit_dir # kit フォルダ(from_kit/path 由来)or Nonemanifest の対応関係
Section titled “manifest の対応関係”{ "schema_version": "2.0.0", "name": "my-kit", "events": { "sample-kit.sine_100hz": { "clip": "sine_100hz.wav", "parameters": { "intensity": 0.8 } } }, "stream_events": { "rain.loop": { "clip": "rain.wav", "parameters": { "intensity": 0.3, "loop": true } } }}events→EventDef(streaming=False, mode="command")stream_events→EventDef(streaming=True, mode="clip", clip="rain.wav")
発火側での使われ方は command と clip の使い分け を参照。