fleshing out ARMusicalVoice, just getting code transferred to JS