using System; public class Note: MusicElement{ private byte value; private int duration; private byte volume; private Instrument instrument; public Note(byte value, int duration, byte volume, Instrument instrument){ this.value = value; this.duration = duration; this.volume = volume; this.instrument = instrument; } public Note(byte value, int duration): this(value, duration, 64, Instrument.Piano){ } public override int Duration{ get{ return duration; } } public override TimedNote[] Linearize(int startTime){ TimedNote[] result = new TimedNote[1]; result[0] = new TimedNote(startTime, value, duration, volume, instrument); return result; } public override MusicElement Transpose(int levels){ return new Note(Util.ByteBetween(value + levels, 0, 127), duration, volume, instrument); } }