'Initializes with a list of event values and sets attributes.
Args:
events: List of drum events to set drum track to.
start_step: The integer starting step offset.
steps_per_bar: The number of steps in a bar.
steps_per_quarter: The number of steps in a quarter note.
Raises:
ValueError: If `events` contains an event that is not a valid drum event.'

def _from_event_list(self, events, start_step=0, steps_per_bar=DEFAULT_STEPS_PER_BAR, steps_per_quarter=DEFAULT_STEPS_PER_QUARTER):

    for event in events:
        if (not isinstance(event, frozenset)):
            raise ValueError(('Invalid    drum    event:    %s' % event))
        if (not all(((MIN_MIDI_PITCH <= drum <= MAX_MIDI_PITCH) for drum in event))):
            raise ValueError(('Drum    event    contains    invalid    note:    %s' % event))
    super(DrumTrack, self)._from_event_list(events, start_step=start_step, steps_per_bar=steps_per_bar, steps_per_quarter=steps_per_quarter)
