MIDI in demo: pick a source, then watch incoming notes light up.
Visual-first (v1): incoming Note On adds to the lit set, Note Off removes it,
and a short event log shows the raw stream decoded by MobMidi.parse/1. An
audible sine per note is a fast follow once Mob.Audio grows a tone primitive
(today Mob.Audio only plays files).
Render tree is plain node maps (the idiom for list-driven mob screens).
Summary
Functions
Callback implementation for Mob.Screen.dump_state/1.
Callback implementation for Mob.Screen.handle_event/3.
Callback implementation for Mob.Screen.handle_info/2.
Callback implementation for Mob.Screen.load_state/2.
Callback implementation for Mob.Screen.mount/3.
Callback implementation for Mob.Screen.render/1.
Callback implementation for Mob.Screen.terminate/2.
Functions
Callback implementation for Mob.Screen.dump_state/1.
Callback implementation for Mob.Screen.handle_event/3.
Callback implementation for Mob.Screen.handle_info/2.
Callback implementation for Mob.Screen.load_state/2.
Callback implementation for Mob.Screen.mount/3.
Callback implementation for Mob.Screen.render/1.
Callback implementation for Mob.Screen.terminate/2.