コンテンツにスキップ
JA

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> から解決します。

em.get(event_id) が返す EventDef:

フィールド意味
event_idイベント id
intensity既定 gain(manifest の parameters.intensity、既定 1.0)
loopループ再生か
device_wiperデバイス側ワイパー値(任意)
streamingTrue なら clip モード(stream_events 由来)
clipclip モードの WAV ファイル名(stream-clips/ 相対)
target送信先アドレス(触覚ファイルで指定)。"" = ブロードキャスト
mode"clip"(streaming)/ "command"
noteメモ

play(id) の送信先は 呼び出し側 target= > EventDef.target(触覚ファイル)> 接続の default_target の順で解決されます。

em.get("sample-kit.sine_100hz") # EventDef | None
em.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 None
{
"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 } }
}
}
  • eventsEventDef(streaming=False, mode="command")
  • stream_eventsEventDef(streaming=True, mode="clip", clip="rain.wav")

発火側での使われ方は command と clip の使い分け を参照。