Пример #1
0
        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);
        }
Пример #2
0
 public abstract PlayLineHarmony Get3_4Templates(ITempoForBars tempo, IBarTemplateModel template, List <Note.Note> noteList, PlayOrderType orderType);
Пример #3
0
 public override PlayLineHarmony Get3_4Templates(ITempoForBars tempo, IBarTemplateModel template, List <Note.Note> noteList, PlayOrderType orderType)
 {
     return(GenerateTemplateCreator.GetResult(tempo, template, noteList, orderType));
 }