コード例 #1
0
ファイル: GridDrawer.cs プロジェクト: Drumbits/DrumTrainer
        public SKPoint Coordinates(IInstrumentId instrument, TimeInUnits t)
        {
            var instrumentIndex = InstrumentIndex(instrument);
            var y = gridRect.Top + (instrumentIndex + 1) * settings.LineHeight;
            var x = gridRect.Left + settings.BeatWidth * t.Index / (float)this.info.UnitsPerBeat.Index;

            return(new SKPoint(x, y));
        }
コード例 #2
0
ファイル: PatternIO.cs プロジェクト: Drumbits/DrumTrainer
        public static Pattern ToPattern(PatternData data)
        {
            var idToSound = new Dictionary <int, ISoundId>();

            foreach (var soundData in data.Sounds)
            {
                if (idToSound.ContainsKey(soundData.Id))
                {
                    throw new PatternParsingException("Duplicate sound id: " + soundData.Id
                                                      + ". Used by \""
                                                      + idToSound[soundData.Id].Name()
                                                      + "\" and \""
                                                      + soundData.Instrument + "." + soundData.Technique
                                                      + "\"");
                }
                idToSound.Add(soundData.Id, new SimpleSoundId(soundData.Instrument, soundData.Technique, soundData.Mark));
            }
            var builder = new Pattern.Builder(data.Sounds.Select(i => idToSound[i.Id]).ToArray());
            int index   = 0;

            foreach (var beatData in data.Beats)
            {
                var      t = new TimeInUnits(beatData.Time);
                ISoundId sound;
                if (!idToSound.TryGetValue(beatData.Sound, out sound))
                {
                    throw new PatternParsingException("Invalid instrument id for beat #" + index + "(t=" + beatData.Time + ", id=" + beatData.Sound + ")");
                }
                builder.Add(t, sound, new Velocity(beatData.Velocity));
            }
            var patternInfo = new PatternInfo.Builder
            {
                BarsCount    = data.BarsCount,
                BeatsPerBar  = data.BeatsPerBar,
                SuggestedBpm = data.SuggestedBpm,
                UnitsPerBeat = new TimeInUnits(data.TimeUnitsPerBeat)
            };

            builder.PatternInfo = patternInfo.Build();
            return(builder.Build());
        }
コード例 #3
0
ファイル: PatternInfo.cs プロジェクト: Drumbits/DrumTrainer
 public float TimeInBeats(TimeInUnits t)
 {
     return(t.Index / (float)UnitsPerBeat.Index);
 }