示例#1
0
        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);
        }
示例#2
0
 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();
 }
示例#3
0
 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));
     }
 }