IEnumerable<Data1ChannelEventList> checkForInvalidNotes(GuitarMessageList owner, Track track, IEnumerable<int> data1List) { var ret = new List<Data1ChannelEventList>(); try { var notesOnData2Zero = track.ChanMessages.Where(x => x.Data2 == 0 && x.Command == ChannelCommand.NoteOn).ToList(); if (notesOnData2Zero.Any()) { track.Remove(notesOnData2Zero); foreach (var x in notesOnData2Zero) { track.Insert(x.AbsoluteTicks, new ChannelMessage(ChannelCommand.NoteOff, x.Data1, 0, x.Channel)); } } if (track.Name.IsGuitarTrackName6()) { var bassTrainers = track.Meta.Where(x => x.Text.IsTrainerBass()).ToList(); var guitarTrainers = track.Meta.Where(x => x.Text.IsTrainerGuitar()).ToList(); if (bassTrainers.Any()) { bassTrainers.ForEach(x => track.Remove(x)); } } if (track.Name.IsBassTrackName6()) { var bassTrainers = track.Meta.Where(x => x.Text.IsTrainerBass()).ToList(); var guitarTrainers = track.Meta.Where(x => x.Text.IsTrainerGuitar()).ToList(); if (guitarTrainers.Any()) { guitarTrainers.ForEach(x => track.Remove(x)); } } ret.AddRange(track.GetCleanMessageList(data1List, owner)); } catch (Exception ex) { ex.Message.OutputDebug(); } return ret; }