public void Add(TimeInUnits t, ISoundId sound, Velocity v) { List <PatternBeat> beatsAtT; if (!beats.TryGetValue(t, out beatsAtT)) { beatsAtT = new List <PatternBeat>(1); beats.Add(t, beatsAtT); } var patternBeat = new PatternBeat(t, sound, v); if (beatsAtT.Any(p => Equals(p.Sound, sound))) { throw new ArgumentException(string.Format("Duplicate beat on {0} at t={1}", sound.Name(), t.Index)); } beatsAtT.Add(patternBeat); if (!preferredInstrumentsOrder.Contains(sound)) { preferredInstrumentsOrder.Add(sound); } }
public PatternBeat(TimeInUnits t, ISoundId sound, Velocity velocity) { T = t; Sound = sound; Velocity = velocity; }