excellent q and yeah, your hunch is right on!
earthsea is a great example. it doesn’t differentiate between down/up events, committing each to the pattern as e.state. since .process is defined as grid_note_trans, the event information is passed as it was added – e.state > 0 triggers a note-on, otherwise it’s note-off.
the study i previously drafted only handled note-on presses, but working on a new one to handle releases, as well!
potential idiosyncratic "gotcha"
if pattern recording is turned off before a note-off is committed, then that note will drone on when replayed. you’ll want to include some mechanism after recording to check the last .event in the pattern is a note-off, otherwise you’ll want to insert an entry for that (it’ll need to include all the other things you’re committing to the pattern, as well, otherwise you’ll get errors when replaying).