def METHOD_NAME(self, *args):
    inputNames = self.inputNames()
    if len(args) != len(inputNames):
        raise ValueError(name+'.compute requires '+str(len(inputNames))+' argument(s), '+str(len(args))+' given')
    # we have to make some exceptions for YamlOutput and PoolAggregator
    # because they expect cpp Pools
    if name in ('YamlOutput', 'PoolAggregator', 'SvmClassifier', 'PCA', 'GaiaTransform', 'TensorflowPredict'):
        args = (args[0].cppPool,)
    # verify that all types match and do any necessary conversions
    result = []
    convertedArgs = []
    for i in range(len(inputNames)):
        arg = args[i]
        if type(args[i]).__module__ == 'numpy':
            if arg.dtype == 'float64':
                arg = arg.astype('float32')
                essentia.INFO('Warning: essentia can currently only accept numpy arrays of dtype '
                              '"single". "%s" dtype is double. Precision will be automatically '
                              'truncated into "single".' %(inputNames[i]))
            if not args[i].flags['C_CONTIGUOUS']:
                arg = copy(args[i])
        goalType = _c.Edt(self.inputType(inputNames[i]))
        try:
            convertedData = _c.convertData(arg, goalType)
        except TypeError:
            raise TypeError('Error cannot convert argument %s to %s' \
                  %(str(_c.determineEdt(arg)), str(goalType)))
        convertedArgs.append(convertedData)
    results = self.__compute__(*convertedArgs)
    # we have to make an exceptional case for YamlInput, because we need
    # to wrap the Pool that it outputs w/ our python Pool from common.py
    if name in ('YamlInput', 'PoolAggregator', 'SvmClassifier', 'PCA', 'GaiaTransform', 'Extractor', 'TensorflowPredict'):
        return _c.Pool(results)
    # MusicExtractor and FreesoundExtractor output two pools
    if name in ('MusicExtractor', 'FreesoundExtractor'):
        return (_c.Pool(results[0]), _c.Pool(results[1]))
    # In the case of MetadataReader, the 7th output is also a Pool
    if name in ('MetadataReader'):
        return results[:7] + (_c.Pool(results[7]),) + results[8:]
    else:
        return results