Arpeggiator implementation is mostly functional