Esempio n. 1
0
        public void GrooveWithFill()
        {
            var       time        = TimeSignature.CommonTime;
            var       feel        = Randomizer.ProbabilityOfTrue(0.6) ? 4 : 3;
            const int measures    = 4;
            var       totalLength = measures * time.BeatCount;
            var       drumStyle   = new DrumStyle(SectionType.None);

            drumStyle.Generate(GrooveGenerator.GenerateGroove(new SongInfo(time, feel)));
            var grooveNotes = Enumerable.Range(0, measures).SelectMany(i => drumStyle.Notes.Select(n => new PercussionNote(n.Start + i * time.BeatCount, n.Percussion, n.Velocity)));
            var fillLength  = Randomizer.ProbabilityOfTrue(0.5) ? 2 : 4;
            var fill        = FillGenerator.GetFill(totalLength - fillLength, fillLength, feel);

            grooveNotes = grooveNotes.Where(n => n.Start < totalLength - fillLength).Union(fill);
            Console.WriteLine(TabWriter.AsTab(feel, grooveNotes.ToList(), measures * time.BeatCount));
        }
Esempio n. 2
0
 public override void Execute()
 {
     foreach (NestDescriptor nest in NestGrid.Elements)
     {
         nest.AssignShape(ShapesGenerator.GenShape());
         nest.AssignFilling(FillGenerator.GenFilling());
     }
     foreach (NestDescriptor nest in NestGrid.Elements)
     {
         nest.Used = false;
         foreach (CellDescriptor cell in nest.Elements)
         {
             if (cell.Enabled)
             {
                 CellAlphaProcManager.HighlightCell(cell);
             }
         }
     }
 }
Esempio n. 3
0
        private List <PercussionNote> AddFill(int repeat, int measure, List <PercussionNote> grooveNotes)
        {
            var isLastMeasureInRepeatedSection     = measure == _measures - 1 && repeat == _repeats - 1;
            var isLastMeasureInSingleMediumSection = _measures > 2 && measure == _measures - 1;
            var isMiddleMeasureInSingleLongSection = _measures > 4 && (measure + 1) % 8 == 0;

            if (isLastMeasureInRepeatedSection || isLastMeasureInSingleMediumSection || isMiddleMeasureInSingleLongSection)
            {
                var fillLength = new List <double> {
                    1.0, 2.0
                }[Randomizer.GetWeightedIndex(new List <double> { 0.5, 0.5 })];

                if (isLastMeasureInRepeatedSection)
                {
                    fillLength *= 2;
                }

                var fill = FillGenerator.GetFill(_songInfo.TimeSignature.BeatCount - fillLength, fillLength, _songInfo.Feel);
                grooveNotes = grooveNotes.Where(n => n.Start < _songInfo.TimeSignature.BeatCount - fillLength).Union(fill).ToList();
            }
            return(grooveNotes);
        }
Esempio n. 4
0
        public void GetFill()
        {
            const double lengthInBeats = 4.0;

            Console.WriteLine(TabWriter.AsTab(3, FillGenerator.GetFill(0, lengthInBeats, 3).ToList(), (int)lengthInBeats));
        }