def cross_channel_threshold_detector(multichannel, fs, **kwargs):
    "\n    Parameters\n    ----------\n    multichannel : np.array\n        Msamples x Nchannels audio data\n    fs : float >0\n    detector_function : function, optional \n        The function used to detect the start and end of a signal. \n        Any custom detector function can be given, the compulsory inputs\n        are audio np.array, sample rate and the function should accept keyword\n        arguments (even if it doesn't use them.)\n        Defaults to dBrms_detector. \n    \n    \n    Returns\n    -------\n    all_detections : list\n        A list with sublists containing start-stop times of the detections \n        in each channel. Each sublist contains the detections in one channel.\n        \n    Notes\n    -----\n    For further keyword arguments see the `threshold_detector` function\n    \n    See Also\n    --------\n    dBrms_detector\n    \n    "
    (samples, channels) = multichannel.shape
    detector_function = kwargs.get('detector_function', dBrms_detector)
    print(channels, samples)
    all_detections = []
    for each in tqdm.tqdm(range(channels)):
        all_detections.append(detector_function(multichannel[:, each], fs, **kwargs))
    return all_detections
Parameters
----------
multichannel : np.array
    Msamples x Nchannels audio data
fs : float >0
detector_function : function, optional 
    The function used to detect the start and end of a signal. 
    Any custom detector function can be given, the compulsory inputs
    are audio np.array, sample rate and the function should accept keyword
    arguments (even if it doesn't use them.)
    Defaults to dBrms_detector. 


Returns
-------
all_detections : list
    A list with sublists containing start-stop times of the detections 
    in each channel. Each sublist contains the detections in one channel.
    
Notes
-----
For further keyword arguments see the `threshold_detector` function

See Also
--------
dBrms_detector
def cross_channel_threshold_detector(multichannel, fs, **kwargs):
    "\n    Parameters\n    ----------\n    multichannel : np.array\n        Msamples x Nchannels audio data\n    fs : float >0\n    detector_function : function, optional \n        The function used to detect the start and end of a signal. \n        Any custom detector function can be given, the compulsory inputs\n        are audio np.array, sample rate and the function should accept keyword\n        arguments (even if it doesn't use them.)\n        Defaults to dBrms_detector. \n    \n    \n    Returns\n    -------\n    all_detections : list\n        A list with sublists containing start-stop times of the detections \n        in each channel. Each sublist contains the detections in one channel.\n        \n    Notes\n    -----\n    For further keyword arguments see the `threshold_detector` function\n    \n    See Also\n    --------\n    dBrms_detector\n    \n    "
    (samples, channels) = multichannel.shape
    detector_function = kwargs.get('detector_function', dBrms_detector)
    print(channels, samples)
    all_detections = []
    for each in tqdm.tqdm(range(channels)):
        all_detections.append(detector_function(multichannel[:, each], fs, **kwargs))
    return all_detections