soprano algorithm