@classmethod
def from_levels_and_durations(cls, levels=(0, 0), durations=(0,),
    curve_shapes=None, offset=0):
    """
        Construct an envelope from levels, durations, and optionally curve shapes
        :param levels: the levels of the curve
        :param durations: the durations of the curve
        :param curve_shapes: the curve shape values (optional)
        :param offset: starts curve from somewhere other than zero
        :return: an Envelope constructed accordingly
        """
    return cls().initialize(levels, durations, curve_shapes, offset)
