diff --git a/R/generateNoise.R b/R/generateNoise.R index 0e5a0db0..36a5fda9 100644 --- a/R/generateNoise.R +++ b/R/generateNoise.R @@ -39,12 +39,13 @@ generateNoise <- function( noise, duration=duration, samp.rate=wave@samp.rate, - bit=wave@bit + bit=wave@bit, + pcm=wave@pcm ) } else { - n <- tuneR::silence(duration=duration, samp.rate=wave@samp.rate, bit=wave@bit) + n <- tuneR::silence(duration=duration, samp.rate=wave@samp.rate, bit=wave@bit, pcm=wave@pcm) for (i in 1:length(noise)) { - nw <- tuneR::noise(noise[i], duration=duration, samp.rate=wave@samp.rate, bit=wave@bit) + nw <- tuneR::noise(noise[i], duration=duration, samp.rate=wave@samp.rate, bit=wave@bit, pcm=wave@pcm) n@left <- n@left + nw@left } } diff --git a/R/reticulate-virtualenv.R b/R/reticulate-virtualenv.R index 9d6a6766..64a93708 100644 --- a/R/reticulate-virtualenv.R +++ b/R/reticulate-virtualenv.R @@ -28,7 +28,7 @@ pythonInstall <- function(unattended=FALSE) { .useUtf8Locale() if (!reticulate::virtualenv_exists(envname = "sonicscrewdriver")) { - reticulate::virtualenv_create(envname = "sonicscrewdriver", packages=NULL) + reticulate::virtualenv_create(envname = "sonicscrewdriver", packages=NULL, version="3.12") } reticulate::virtualenv_install("sonicscrewdriver", c("scikit-maad", "numpy==1.26.4", "librosa", "tensorflow", "birdnetlib")) } diff --git a/tests/testthat/test-generateNoise.R b/tests/testthat/test-generateNoise.R index 1487bd92..b7d5814a 100644 --- a/tests/testthat/test-generateNoise.R +++ b/tests/testthat/test-generateNoise.R @@ -34,6 +34,13 @@ test_that("generateNoise outputs something Wave-like", { expect_s4_class(generateNoise(w, "white", FALSE, 0.5, output="list")[[2]], "WaveMC") }) +test_that("generateNoise preserves PCM settings from audio read through av", { + skip_if_not_installed("av") + + w <- readAudio(system.file("extdata/AUDIOMOTH.flac", package="sonicscrewdriver")) + expect_silent(generateNoise(w, "white", FALSE, 0.1, output="list")) +}) + # The thresholds below were set when a pulse peaked at 2^32 rather than at the 1 # a floating point wave allows, and noise was referenced to that same wrong scale. # At a noise ratio of 0.25 the noise now sits near 0.05 of full scale.