private void Start() { for (var i = 0xff10; i <= 0xff25; i++) { var v = 0; // lengths should be preserved if (i == 0xff11 || i == 0xff16 || i == 0xff20) { // channel 1, 2, 4 lengths v = GetUnmaskedByte(i) & 0b00111111; } else if (i == 0xff1b) { // channel 3 length v = GetUnmaskedByte(i); } SetByte(i, v); } foreach (var m in _allModes) { m.Start(); } _output.Start(); }