State over time
A sequencer has a playhead — a position that moves forward one step at a time. Each step() looks at the pattern, maybe plays, then moves on. That's how every drum machine and music app keeps time.
Challenge A:Finish step(self): if self.pattern[self.pos] == "x", play kick(self.pos + 1); then self.pos += 1. Step s = Sequencer("x..x..x.") 8 times.