/// <inheritdoc /> public override byte[] GetBytes() { var bytes = new List <byte>(); bytes.AddRange(ByteUtils.NumberTo4MidiPackets(Threshold)); bytes.AddRange(ByteUtils.NumberTo4MidiPackets((byte)Ratio)); bytes.AddRange(ByteUtils.NumberTo4MidiPackets((byte)Attack)); bytes.AddRange(ByteUtils.NumberTo4MidiPackets((byte)Release)); bytes.AddRange(ByteUtils.NumberTo4MidiPackets(Level)); bytes.AddRange(ByteUtils.BooleanTo4MidiPackets(Sidechain)); bytes.AddRange(ByteUtils.NumberTo4MidiPackets(SidechainLevel)); bytes.AddRange(ByteUtils.NumberTo4MidiPackets((byte)SidechainNote)); bytes.AddRange(ByteUtils.NumberTo4MidiPackets(SidechainTime)); bytes.AddRange(ByteUtils.NumberTo4MidiPackets(SidechainRelease)); bytes.AddRange(ByteUtils.BooleanTo4MidiPackets(SidechainSync)); bytes.AddRange(ByteUtils.Repeat4MidiPacketsReserve(21)); return(bytes.ToArray()); }