Redesigned the interval generators to just emit events. Much simpler, and the inheritance model is much easier, too.
changed 'beat' to the more general 'interval'