Ejemplo n.º 1
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();
 }
Ejemplo n.º 2
0
        public static IDictionary <IInstrumentId, ContinuousBeatsLooper> FromPattern(Pattern pattern)
        {
            var info     = pattern.Info;
            var allBeats = new Dictionary <IInstrumentId, List <TimedBeatId> >();

            foreach (var beatId in pattern.Ids)
            {
                var beat = pattern.Beat(beatId);
                if (!allBeats.TryGetValue(beat.Sound.Instrument, out List <TimedBeatId> beatsForInstrument))
                {
                    beatsForInstrument = new List <TimedBeatId>();
                    allBeats.Add(beat.Sound.Instrument, beatsForInstrument);
                }
                beatsForInstrument.Add(new TimedBeatId(info.TimeInBeats(beat.T), beatId));
            }
            var totalLength = info.BarsCount * info.BeatsPerBar;

            return(allBeats.ToDictionary(kv => kv.Key, kv => new ContinuousBeatsLooper(kv.Value.ToArray(), totalLength)));
        }