Brownian or random walk (diffusion) noise with 1/f^2 PSD
        (not really a color... rather Brownian or random-walk)

        N = number of samples
        b2 = desired PSD is b2*f^-2
        fs = sampling frequency

        we integrate white-noise to get Brownian noise.

def brown(num_points=1024, b2=1.0, fs=1.0):
    """ Brownian or random walk (diffusion) noise with 1/f^2 PSD
        (not really a color... rather Brownian or random-walk)

        N = number of samples
        b2 = desired PSD is b2*f^-2
        fs = sampling frequency

        we integrate white-noise to get Brownian noise.

    """
    return (1.0/float(fs))*numpy.cumsum(white(num_points, b0=b2*(4.0*math.pi*math.pi), fs=fs))