def METHOD_NAME(n_samples, spectrum="white", rms=1, sampling_rate=44100, seed=None):
    """
    Generate single or multi channel normally distributed white or pink noise.
    The pink noise is generated by applying a ``sqrt(1/f)`` filter to the
    spectrum.
    Parameters
    ----------
    n_samples : int
        The length of the signal in samples
    spectrum : str, optional
        ``white`` to generate noise with constant energy across frequency.
        ``pink`` to generate noise with constant energy across filters with
        constant relative bandwith. The default is ``white``.
    rms : double, array like, optional
        The route mean square (RMS) value of the noise signal. A multi channel
        noise signal is generated if an array of RMS values is passed.
        The default is ``1``.
    sampling_rate : int, optional
        The sampling rate in Hz. The default is ``44100``.
    seed : int, None, optional
        The seed for the random generator. Pass a seed to obtain identical
        results for multiple calls. The default is ``None``, which will yield
        different results with every call.
    Returns
    -------
    signal : Signal
        The noise signal. The signal is in the time domain and has the ``rms``
        FFT normalization (see :py:func:`~pyfar.dsp.fft.normalization`). The
        type of the spectrum (``white``, ``pink``) and the RMS amplitude are
        written to `comment`.
    """
    # generate the noise
    rms = np.atleast_1d(rms)
    n_samples = int(n_samples)
    cshape = np.atleast_1d(rms).shape
    rng = np.random.default_rng(seed)
    METHOD_NAME = rng.standard_normal(np.prod(cshape + (n_samples, )))
    METHOD_NAME = METHOD_NAME.reshape(cshape + (n_samples, ))
    if spectrum == "pink":
        # apply 1/f filter in the frequency domain
        METHOD_NAME = fft.rfft(METHOD_NAME, n_samples, sampling_rate, 'none')
        METHOD_NAME /= np.sqrt(np.arange(1, METHOD_NAME.shape[-1]+1))
        METHOD_NAME = fft.irfft(METHOD_NAME, n_samples, sampling_rate, 'none')
    elif spectrum != "white":
        raise ValueError(
            f"spectrum is '{spectrum}' but must be 'white' or 'pink'")
    # level the noise
    rms_current = np.atleast_1d(np.sqrt(np.mean(METHOD_NAME**2, axis=-1)))
    for idx in np.ndindex(rms.shape):
        METHOD_NAME[idx] = METHOD_NAME[idx] / rms_current[idx] * rms[idx]
    # save to Signal
    nl = "\n"  # required as variable because f-strings cannot contain "\"
    comment = f"{spectrum} noise signal (rms = {str(rms).replace(nl, ',')})"
    signal = pyfar.Signal(
        METHOD_NAME, sampling_rate, fft_norm="rms", comment=comment)
    return signal