Improve envelope flexibility

- Initial gate value of 0 no longer incorrectly triggers envelope.
- Refactor initalization into a reset() method to allow envelope reuse.