Thanks — that is a sharp catch, and you are right about ci % 2.
I have updated the sample so the blip cadence uses a separate voiced counter that only increments when a character is actually voiced. Spaces are always silent; with skip_punctuation on (the new default), punctuation is silent too and does not advance that counter. So a one-letter word like "a" or "I" no longer goes missing just because its absolute index was even.
The settings are now exported on the Main node:
- char_interval (default 0.05)
- blip_every_n_chars (default 2)
- skip_punctuation (default true; set is . , ! ? ; : … ' " -)
- pitch_min / pitch_max (defaults 0.95 / 1.05, applied as pitch_scale = randf_range(...) on each blip)
The downloadable zip on this page is already updated with that build. If you try it and the rhythm still feels off on a specific line, tell me which line and I'll tune the defaults.
— Yuanqian Ye