Solving the cocktail party problem