Beispiel #1
0
 public void GenerateGroove()
 {
     ;
     for (var i = 0; i < 20; i++)
     {
         var timeSignature = new TimeSignature(Randomizer.ProbabilityOfTrue(0.7) ? 4 : 3, 4);
         var feel          = Randomizer.ProbabilityOfTrue(0.75) ? 4 : 3;
         var groove        = GrooveGenerator.GenerateGroove(new SongInfo(timeSignature, feel));
         var drumStyle     = new DrumStyle(SectionType.Verse);
         drumStyle.Generate(groove);
         Console.WriteLine("{0}, {1} feel", timeSignature, feel);
         Console.WriteLine(TabWriter.AsTab(groove.Feel, drumStyle.Notes, timeSignature.BeatCount));
     }
 }
Beispiel #2
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));
        }