public void AddPlayedBeat(TimedBeatId timedBeat, ISoundId sound) { var coord = grid.Coordinates(sound.Instrument, timedBeat.T); var expiry = timedBeat.T + 0.75f * pattern.Info.TotalBeats; var mark = new BeatMark(timedBeat.Id, coord, beatPaints.Paint(BeatStatus.Pending), expiry, sound.Mark); beatMarks.Enqueue(mark); }
public void Draw(SKCanvas canvas, SKRect gridRect, PerformanceSummary summary) { canvas.Save(); canvas.Translate(0, gridRect.Height); foreach (var beat in pattern.Ids) { var beatInfo = pattern.Beat(beat); var summaryForBeat = summary.BeatSummary(beat); var point = gridCoordinates.Coordinates(beatInfo.Sound.Instrument, beatInfo.T); PrintBeatSummary(canvas, point, summaryForBeat); } canvas.Restore(); }
public BeatsDrawer(Pattern pattern, IGridCoordinatesProvider grid) { this.pattern = pattern; this.grid = grid; this.patternPaint = new SKPaint { Color = SKColors.White, IsAntialias = true, Style = SKPaintStyle.StrokeAndFill }; this.patternSounds = pattern.Sounds; foreach (var beat in pattern.AllBeats()) { var coord = grid.Coordinates(beat.Sound.Instrument, beat.T); patternBeats.Add(new PointAndMark(coord, beat.Sound.Mark)); } }