/*public MixTableElement MixTableElementRead() { return null; }*/ protected Note ReadNote() { Note note = new Note(); var header = ReadByte(); note.Header = header; // Note status note.IsAccentuated = ((header & 0x40) != 0); note.IsDotted = ((header & 0x02) != 0); note.IsGhostNote = ((header & 0x04) != 0); // Note type if ((header & 0x20) != 0) { byte noteType = ReadByte(); note.IsTieNote = noteType == 0x02; note.IsDeadNote = noteType == 0x03; } // Note duration if ((header & 0x01) != 0) { try { // TODO: understand why we can have here a Duration whose value // is SIX // In GP, it seems to be some kind of special value (a triplet // appears...) note.Duration = ReadEnum<Duration>(); } catch { } note.NTuplet = ReadByte(); } // Note dynamic if ((header & 0x10) != 0) note.Dynamic = ReadEnum<Dynamic>(); // Fret number if ((header & 0x20) != 0) note.FretNumber = ReadByte(); // Fingering if ((header & 0x80) != 0) { /*note.FingeringLeftHand = ReadEnum<Fingering>(); note.FingeringRightHand = ReadEnum<Fingering>();*/ Skip(2); } // Effects on the note if ((header & 0x08) != 0) note.Effects = ReadEffectsOnNote(); return note; }
/*public MixTableElement MixTableElementRead() { return null; }*/ protected Note ReadNote() { Note note = new Note(); var header = ReadByte(); note.Header = header; // Note status note.IsAccentuated = ((header & 0x40) != 0); note.IsDotted = ((header & 0x02) != 0); note.IsGhostNote = ((header & 0x04) != 0); // Note type if ((header & 0x20) != 0) { byte noteType = ReadByte(); note.IsTieNote = noteType == 0x02; note.IsDeadNote = noteType == 0x03; } // Note dynamic if ((header & 0x10) != 0) { var dynamic = ReadEnum<Dynamic>(); //TODO set dynamic note.Dynamic = Dynamic.Invalid; } // Fret number if ((header & 0x20) != 0) note.FretNumber = ReadByte(); // Fingering if ((header & 0x80) != 0) { note.FingeringLeftHand = ReadEnum<Fingering>(); note.FingeringRightHand = ReadEnum<Fingering>(); } // Note duration if ((header & 0x01) != 0) Skip(8); Skip(1); // Effects on the note if ((header & 0x08) != 0) note.Effects = ReadEffectsOnNote(); return note; }