alg1 <- function(sound) { sy <- as.vector(sound$sound) sx <- 0:(length(sy)-1) / sound$rate fy <- abs(fft(sy))[1:(length(sy)/2)] fx <- 0:(length(fy)-1) * sound$rate / length(sy) # Gregor thr <- quantile(fy, 0.9) # take the maximum 10% # Philipp zx <- fx zy <- zx * 0 # Just initialize harmonics <- 5 for (i in 2:(length(zx))) { idx <- seq(from=i, by=i-1, to=length(zx)) if (length(idx) > harmonics) { idx = idx[1:harmonics] } zy[i] <- sum(fy[idx]) / length(idx) }