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)); }
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); } } } }
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); }
public void GetFill() { const double lengthInBeats = 4.0; Console.WriteLine(TabWriter.AsTab(3, FillGenerator.GetFill(0, lengthInBeats, 3).ToList(), (int)lengthInBeats)); }