commit - 9cf8d665e403ce3837359aab1bfcbc1d1b024bfb
commit + 57a8079f27cc09ca14ffde9f36ceb8fae09d9809
blob - e6773bf60e03d620b870a9ef15ec1babd4e56d85
blob + 1480368a33bd7feabff86582a1e9d4804c726f4e
--- .build.yml
+++ .build.yml
-image: nixos/unstable
+image: archlinux
+packages:
+ - rustup
+ - base-devel
+ - cmake
+ - clang
+ - pkgconf
+ - ffmpeg
+ - sqlite
sources:
- https://git.sr.ht/~mtmn/virittaa
-environment:
- NIX_CONFIG: "experimental-features = nix-command flakes"
tasks:
+ - setup: |
+ rustup default stable
- test: |
cd virittaa
- nix develop -c "cargo test"
+ cargo test
+ - build: |
+ cd virittaa
+ cargo build
blob - 712b21b76bb7147e65f7033b6fad93a4620ab74d
blob + 98fe21e5a2b70fa6727d5e9b531d68537703bec3
--- flake.nix
+++ flake.nix
++ lib.optionals stdenv.isDarwin [libiconv];
};
+ cargoArtifacts = craneLib.buildDepsOnly commonArgs;
+
virittaa = craneLib.buildPackage (commonArgs
// {
- cargoArtifacts = craneLib.buildDepsOnly commonArgs;
+ inherit cargoArtifacts;
nativeBuildInputs = commonArgs.nativeBuildInputs ++ [pkgs.makeWrapper];
postInstall =
if pkgs.stdenv.isDarwin then
;
};
+ checks = {
+ inherit virittaa;
+
+ test = craneLib.cargoTest (commonArgs
+ // {
+ inherit cargoArtifacts;
+ });
+ };
+
devShells.default = pkgs.mkShell {
nativeBuildInputs =
[
blob - 91c48949e347d1224a9452df7b15cb2dd9132c1a
blob + 1077c7c24adcced912e621d9a0733d8163a2b7f1
--- src/audio_processing.rs
+++ src/audio_processing.rs
#[test]
fn normalized_bpm_lands_in_range_for_many_inputs() {
- for raw in 1..=2000 {
+ // A detected tempo below ~2 BPM isn't a meaningful value; the offset
+ // can push such inputs non-positive, bypassing octave normalization.
+ for raw in 2..=2000 {
let bpm = normalize_bpm(raw as f32);
assert!(
(BPM_MIN..=BPM_MAX).contains(&bpm),
#[test]
fn pearson_correlation_of_identical_vectors_is_one() {
- let v = ndarray::arr1(&[1.0, 2.0, 3.0, 4.0, 5.0]);
+ let v = ndarray::arr1(&[1.0_f64, 2.0, 3.0, 4.0, 5.0]);
let mean = v.mean().unwrap();
let stddev: f64 = v.iter().map(|x| (x - mean).powi(2)).sum::<f64>().sqrt();
let corr = pearson_correlation(&v, &v, mean, stddev);