public abstract PlayLineHarmony Get3_4Templates(ITempoForBars tempo, IBarTemplateModel template, List <Note.Note> noteList, PlayOrderType orderType);
public static PlayLineHarmony GetResult(ITempoForBars tempo, IBarTemplateModel template, List <Note.Note> noteList, PlayOrderType orderType) { PlayLineHarmony playLine = new PlayLineHarmony(); playLine.Instrument = Sanford.Multimedia.Midi.GeneralMidiInstrument.Accordion; playLine.Order = 1; playLine.Vol = 127; playLine.NoteQueue = new List <PlayLineNotes>(); Random r = new Random(); var repeatRandom = r.Next(0, 19); var minOctav = r.Next(3, 5); var maxOctav = r.Next(5, 7); var skipRandom = r.Next(1, 8); int[] notes = noteList.Where(a => a.Octave >= minOctav && a.Octave <= maxOctav).Skip(skipRandom).Take(template.NoteCount).OrderByDescending(a => a.Number).Select(a => a.Number).ToArray(); if (orderType == PlayOrderType.Ascending) { notes = notes.OrderBy(a => a).ToArray(); } else if (orderType == PlayOrderType.Randomize) { notes = notes.Randomize().Take(notes.Length).ToArray(); } for (int j = 0; j < notes.Length; j++) { var newNote = GetNote(playLine.NoteQueue.Count + 1, tempo, template.AllNoteValues[j].NoteValue, noteList, notes[j]); playLine.NoteQueue.Add(newNote); } return(playLine); }
public override PlayLineHarmony Get3_4Templates(ITempoForBars tempo, IBarTemplateModel template, List <Note.Note> noteList, PlayOrderType orderType) { return(GenerateTemplateCreator.GetResult(tempo, template, noteList, orderType)); }