[INFO] cloning repository https://github.com/JackDraak/Arrvee
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/JackDraak/Arrvee" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJackDraak%2FArrvee", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJackDraak%2FArrvee'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e89814f069fb95db2c1e6131b6edc4dd09b24178
[INFO] checking JackDraak/Arrvee against try#54cf65b8d066c082e536455049b95943cf30378f for pr-151920
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJackDraak%2FArrvee" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/JackDraak/Arrvee
[INFO] finished tweaking git repo https://github.com/JackDraak/Arrvee
[INFO] tweaked toml for git repo https://github.com/JackDraak/Arrvee written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/JackDraak/Arrvee on toolchain 54cf65b8d066c082e536455049b95943cf30378f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/JackDraak/Arrvee already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 0b6d6c0d471db199da885393770e42076d0b2635d0f5136a2d0a8e85e3cfc18a
[INFO] running `Command { std: "docker" "start" "-a" "0b6d6c0d471db199da885393770e42076d0b2635d0f5136a2d0a8e85e3cfc18a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0b6d6c0d471db199da885393770e42076d0b2635d0f5136a2d0a8e85e3cfc18a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0b6d6c0d471db199da885393770e42076d0b2635d0f5136a2d0a8e85e3cfc18a", kill_on_drop: false }`
[INFO] [stdout] 0b6d6c0d471db199da885393770e42076d0b2635d0f5136a2d0a8e85e3cfc18a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cd0126ad265d1d467488f51bc7e2478d0342374ae388d3945f4bc8503305c2da
[INFO] running `Command { std: "docker" "start" "-a" "cd0126ad265d1d467488f51bc7e2478d0342374ae388d3945f4bc8503305c2da", kill_on_drop: false }`
[INFO] [stderr]     Checking libloading v0.8.9
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling find-msvc-tools v0.1.2
[INFO] [stderr]    Compiling wayland-sys v0.31.7
[INFO] [stderr]    Compiling bytemuck_derive v1.10.1
[INFO] [stderr]    Compiling wayland-client v0.31.11
[INFO] [stderr]    Compiling wayland-scanner v0.31.7
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking rustix v0.38.44
[INFO] [stderr]    Compiling cc v1.2.38
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]    Compiling serde_core v1.0.226
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]    Compiling serde v1.0.226
[INFO] [stderr]    Compiling serde_derive v1.0.226
[INFO] [stderr]     Checking bytemuck v1.23.2
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking symphonia-core v0.5.4
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking potential_utf v0.1.3
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]    Compiling wayland-backend v0.3.11
[INFO] [stderr]     Checking ab_glyph v0.2.31
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking memmap2 v0.9.8
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking indexmap v2.11.4
[INFO] [stderr]     Checking symphonia-metadata v0.5.4
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking codespan-reporting v0.11.1
[INFO] [stderr]     Checking symphonia-utils-xiph v0.5.4
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking emath v0.28.1
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]    Compiling wgpu-hal v0.21.1
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking libloading v0.7.4
[INFO] [stderr]     Checking gpu-descriptor-types v0.2.0
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]    Compiling smithay-client-toolkit v0.18.1
[INFO] [stderr]     Checking regex-syntax v0.8.6
[INFO] [stderr]     Checking unicode-xid v0.2.6
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking anstream v0.6.20
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]     Checking gpu-descriptor v0.3.2
[INFO] [stderr]     Checking ash v0.37.3+1.3.251
[INFO] [stderr]     Checking ecolor v0.28.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking naga v0.20.0
[INFO] [stderr]     Checking khronos-egl v6.0.0
[INFO] [stderr]    Compiling wgpu-core v0.21.1
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking gethostname v1.0.2
[INFO] [stderr]     Checking calloop v0.12.4
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking wgpu-types v0.20.0
[INFO] [stderr]     Checking regex-automata v0.4.10
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]    Compiling litrs v0.4.2
[INFO] [stderr]     Checking epaint v0.28.1
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling winit v0.29.15
[INFO] [stderr]    Compiling wgpu v0.20.1
[INFO] [stderr]     Checking wayland-cursor v0.31.11
[INFO] [stderr]     Checking wayland-protocols v0.31.2
[INFO] [stderr]     Checking calloop-wayland-source v0.2.0
[INFO] [stderr]     Checking wayland-protocols v0.32.9
[INFO] [stderr]     Checking regex v1.11.2
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking extended v0.1.0
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]    Compiling clap_derive v4.5.47
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]     Checking clap_builder v4.5.48
[INFO] [stderr]     Checking symphonia-format-riff v0.5.4
[INFO] [stderr]     Checking alsa v0.9.1
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking egui v0.28.1
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking symphonia-format-isomp4 v0.5.4
[INFO] [stderr]     Checking symphonia-format-mkv v0.5.4
[INFO] [stderr]     Checking symphonia-format-ogg v0.5.4
[INFO] [stderr]     Checking symphonia-codec-vorbis v0.5.4
[INFO] [stderr]     Checking symphonia-bundle-flac v0.5.4
[INFO] [stderr]     Checking symphonia-bundle-mp3 v0.5.4
[INFO] [stderr]     Checking symphonia-codec-pcm v0.5.4
[INFO] [stderr]     Checking symphonia-codec-adpcm v0.5.4
[INFO] [stderr]     Checking symphonia-codec-aac v0.5.4
[INFO] [stderr]     Checking wayland-protocols-wlr v0.2.0
[INFO] [stderr]     Checking wayland-protocols-plasma v0.2.0
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking rustc-hash v2.1.1
[INFO] [stderr]     Checking strength_reduce v0.2.4
[INFO] [stderr]     Checking transpose v0.2.3
[INFO] [stderr]     Checking type-map v0.5.1
[INFO] [stderr]     Checking symphonia v0.5.4
[INFO] [stderr]     Checking clap v4.5.48
[INFO] [stderr]     Checking webbrowser v1.0.5
[INFO] [stderr]     Checking lewton v0.10.2
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking env_filter v0.1.3
[INFO] [stderr]     Checking primal-check v0.3.4
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking claxon v0.4.3
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking hound v3.5.1
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]     Checking rodio v0.18.1
[INFO] [stderr]     Checking rustfft v6.4.1
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.9
[INFO] [stderr]     Checking futures-intrusive v0.5.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking sctk-adwaita v0.8.3
[INFO] [stderr]     Checking pollster v0.3.0
[INFO] [stderr]     Checking glam v0.27.0
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking plotters-backend v0.3.7
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking smithay-clipboard v0.7.2
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking oorandom v11.1.5
[INFO] [stderr]     Checking anes v0.1.6
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking egui-winit v0.28.1
[INFO] [stderr]     Checking egui-wgpu v0.28.1
[INFO] [stderr]     Checking arrvee-visualizer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `playback::AudioPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use playback::AudioPlayback;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData`, `PrescanProcessor`, and `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arv_format::ArvFormat`
[INFO] [stdout]   --> src/audio/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use arv_format::ArvFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData`, `PrescanProcessor`, and `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arv_format::ArvFormat`
[INFO] [stdout]   --> src/audio/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use arv_format::ArvFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `playback::AudioPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use playback::AudioPlayback;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData`, `PrescanProcessor`, and `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arv_format::ArvFormat`
[INFO] [stdout]   --> src/audio/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use arv_format::ArvFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `playback::AudioPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use playback::AudioPlayback;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:32
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `engine::GraphicsEngine`
[INFO] [stdout]  --> src/graphics/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use engine::GraphicsEngine;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData`, `PrescanProcessor`, and `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arv_format::ArvFormat`
[INFO] [stdout]   --> src/audio/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use arv_format::ArvFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `playback::AudioPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use playback::AudioPlayback;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:32
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `engine::GraphicsEngine`
[INFO] [stdout]  --> src/graphics/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use engine::GraphicsEngine;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData`, `PrescanProcessor`, and `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arv_format::ArvFormat`
[INFO] [stdout]   --> src/audio/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use arv_format::ArvFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData`, `PrescanProcessor`, and `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arv_format::ArvFormat`
[INFO] [stdout]   --> src/audio/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use arv_format::ArvFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GpuAudioAnalyzer` and `GpuAudioFeatures`
[INFO] [stdout]   --> src/audio/mod.rs:20:24
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use gpu_analyzer::{GpuAudioAnalyzer, GpuAudioFeatures};
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `texture_manager`, `uniform_bind_group_layout`, and `gpu_analyzer` are never read
[INFO] [stdout]   --> src/graphics/engine.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     texture_manager: TextureManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     uniform_bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     gpu_analyzer: Option<GpuAudioAnalyzer>, // GPU-accelerated audio analysis
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `psychedelic_manager_mut`, `psychedelic_manager`, `cleanup`, `init_gpu_analyzer`, `analyze_audio_gpu`, and `gpu_features_to_audio_frame` are never used
[INFO] [stdout]    --> src/graphics/engine.rs:393:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn psychedelic_manager_mut(&mut self) -> &mut PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn psychedelic_manager(&self) -> &PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn cleanup(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn init_gpu_analyzer(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub async fn analyze_audio_gpu(&mut self, audio_data: &[f32]) -> Option<GpuAudioFeatures> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn gpu_features_to_audio_frame(&self, gpu_features: &GpuAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `textures` and `bind_groups` are never read
[INFO] [stdout]  --> src/graphics/texture.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     textures: HashMap<String, wgpu::Texture>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 5 |     bind_groups: HashMap<String, wgpu::BindGroup>,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `context`, `renderer`, `show_controls`, `volume`, and `selected_preset` are never read
[INFO] [stdout]   --> src/ui/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct UserInterface {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 10 |     context: egui::Context,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 11 |     state: State,
[INFO] [stdout] 12 |     renderer: Renderer,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 13 |     show_controls: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 14 |     volume: f32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     selected_preset: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `render`, `ui_content`, `volume`, and `selected_preset` are never used
[INFO] [stdout]    --> src/ui/mod.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl UserInterface {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     fn ui_content(ctx: &egui::Context, show_controls: &mut bool, volume: &mut f32, selected_preset: &mut usize) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn volume(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn selected_preset(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update` are never used
[INFO] [stdout]   --> src/audio/fft.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 79 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 111 |     pub fn new(sample_rate: f32, fft_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     fn hann_window(size: usize) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `detect_beat`, and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(sample_rate: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioPlayback` is never constructed
[INFO] [stdout]  --> src/audio/playback.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct AudioPlayback {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/playback.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  23 |     pub fn new() -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub async fn load_file<P: AsRef<Path>>(&mut self, path: P) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn play(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn pause(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn stop(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_volume(&self, volume: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn is_finished(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_current_audio_frame(&mut self) -> AudioFrame {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn convert_to_audio_frame_static(normalized: &NormalizedAudioFeatures, sample_rate: f32, sensitivity: f32) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:75:18
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 75 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_prescan_frame` and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv`, `load_arv`, and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:173:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 172 |     /// Create a new normalizer with default parameters
[INFO] [stdout] 173 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn normalize(&mut self, raw: &RawAudioFeatures) -> NormalizedAudioFeatures {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     fn normalize_value(&self, value: f32, max_value: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn effective_parameters(&self) -> NormalizationParameters {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn update_observed_ranges(&mut self, raw: &RawAudioFeatures) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/cpu_analyzer.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl CpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 16 |     /// Create a new CPU-based audio analyzer
[INFO] [stdout] 17 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `new_standalone` are never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated functions in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub async fn new_standalone(sample_rate: f32, chunk_size: usize) -> Result<Self> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `set_manual_effect`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn set_manual_effect(&mut self, effect_name: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioPlayback` is never constructed
[INFO] [stdout]  --> src/audio/playback.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct AudioPlayback {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/playback.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  23 |     pub fn new() -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub async fn load_file<P: AsRef<Path>>(&mut self, path: P) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn play(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn pause(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn stop(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_volume(&self, volume: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn is_finished(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_current_audio_frame(&mut self) -> AudioFrame {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn convert_to_audio_frame_static(normalized: &NormalizedAudioFeatures, sample_rate: f32, sensitivity: f32) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `prescan_file`, `load_prescan_data`, `load_audio_file`, `update_statistics`, and `classify_content` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `unpack_float`, `unpack_beat_strength`, and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn unpack_float(value: u16) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     fn unpack_beat_strength(value: u8) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load_arv` is never used
[INFO] [stdout]    --> src/audio/arv_format.rs:164:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_adaptive`, `with_parameters`, `get_parameters`, `save_parameters`, and `load_parameters` are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GraphicsEngine` is never constructed
[INFO] [stdout]   --> src/graphics/engine.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update_view_proj` are never used
[INFO] [stdout]    --> src/graphics/engine.rs:84:8
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl Uniforms {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  84 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     fn update_view_proj(&mut self, width: f32, height: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/graphics/engine.rs:124:18
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- associated items in this implementation
[INFO] [stdout] 124 |     pub async fn new(window: &'a Window) -> Result<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     fn create_fullscreen_quad() -> Vec<Vertex> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     pub fn resize(&mut self, new_size: winit::dpi::PhysicalSize<u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn render(&mut self, audio_frame: &AudioFrame, _window: &Window) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn psychedelic_manager_mut(&mut self) -> &mut PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn psychedelic_manager(&self) -> &PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn cleanup(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn init_gpu_analyzer(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub async fn analyze_audio_gpu(&mut self, audio_data: &[f32]) -> Option<GpuAudioFeatures> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn gpu_features_to_audio_frame(&self, gpu_features: &GpuAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ShaderManager` is never constructed
[INFO] [stdout]  --> src/graphics/shader.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ShaderManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `load_shader`, `create_pipeline`, and `get_pipeline` are never used
[INFO] [stdout]   --> src/graphics/shader.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl ShaderManager {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 11 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn load_shader(&mut self, device: &Device, name: &str, source: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn create_pipeline(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn get_pipeline(&self, name: &str) -> Option<&RenderPipeline> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `desc` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Vertex {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn desc() -> wgpu::VertexBufferLayout<'static> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBuffer` is never constructed
[INFO] [stdout]   --> src/graphics/vertex.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct VertexBuffer {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update` are never used
[INFO] [stdout]   --> src/graphics/vertex.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 44 |     pub fn new(device: &wgpu::Device, vertices: &[Vertex]) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextureManager` is never constructed
[INFO] [stdout]  --> src/graphics/texture.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]   9 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PsychedelicManager` is never constructed
[INFO] [stdout]  --> src/effects/psychedelic_manager.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct PsychedelicManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EffectConfig` is never constructed
[INFO] [stdout]   --> src/effects/psychedelic_manager.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct EffectConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:61:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  61 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn update(&mut self, delta_time: f32, audio_frame: &AudioFrame) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     fn analyze_and_set_targets(&mut self, audio_frame: &AudioFrame) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     fn update_transitions(&mut self, delta_time: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     fn update_intensity_scalers(&mut self, audio_frame: &AudioFrame) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn get_effect_weights(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn set_manual_effect(&mut self, effect_name: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `texture_manager`, `uniform_bind_group_layout`, and `gpu_analyzer` are never read
[INFO] [stdout]   --> src/graphics/engine.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     texture_manager: TextureManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     uniform_bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     gpu_analyzer: Option<GpuAudioAnalyzer>, // GPU-accelerated audio analysis
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `init_gpu_analyzer`, `analyze_audio_gpu`, and `gpu_features_to_audio_frame` are never used
[INFO] [stdout]    --> src/graphics/engine.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn init_gpu_analyzer(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub async fn analyze_audio_gpu(&mut self, audio_data: &[f32]) -> Option<GpuAudioFeatures> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn gpu_features_to_audio_frame(&self, gpu_features: &GpuAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `textures` and `bind_groups` are never read
[INFO] [stdout]  --> src/graphics/texture.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     textures: HashMap<String, wgpu::Texture>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 5 |     bind_groups: HashMap<String, wgpu::BindGroup>,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `convert_to_audio_frame`, `get_current_audio_chunk`, `get_full_audio_buffer`, and `set_sensitivity` are never used
[INFO] [stdout]    --> src/audio/playback.rs:296:8
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `pack_float`, `unpack_float`, `pack_beat_strength`, `unpack_beat_strength`, `from_prescan_frame`, and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 55 |     /// Convert normalized float (0.0-1.0) to u16 (0-65535)
[INFO] [stdout] 56 |     fn pack_float(value: f32) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn unpack_float(value: u16) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     fn pack_beat_strength(strength: f32) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     fn unpack_beat_strength(value: u8) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv`, `load_arv`, and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_adaptive`, `with_parameters`, `get_parameters`, `save_parameters`, and `load_parameters` are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `texture_manager`, `uniform_bind_group_layout`, and `gpu_analyzer` are never read
[INFO] [stdout]   --> src/graphics/engine.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     texture_manager: TextureManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     uniform_bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     gpu_analyzer: Option<GpuAudioAnalyzer>, // GPU-accelerated audio analysis
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `psychedelic_manager_mut`, `psychedelic_manager`, `cleanup`, `init_gpu_analyzer`, `analyze_audio_gpu`, and `gpu_features_to_audio_frame` are never used
[INFO] [stdout]    --> src/graphics/engine.rs:393:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn psychedelic_manager_mut(&mut self) -> &mut PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn psychedelic_manager(&self) -> &PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn cleanup(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn init_gpu_analyzer(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub async fn analyze_audio_gpu(&mut self, audio_data: &[f32]) -> Option<GpuAudioFeatures> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn gpu_features_to_audio_frame(&self, gpu_features: &GpuAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `textures` and `bind_groups` are never read
[INFO] [stdout]  --> src/graphics/texture.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     textures: HashMap<String, wgpu::Texture>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 5 |     bind_groups: HashMap<String, wgpu::BindGroup>,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `context`, `renderer`, `show_controls`, `volume`, and `selected_preset` are never read
[INFO] [stdout]   --> src/ui/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct UserInterface {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 10 |     context: egui::Context,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 11 |     state: State,
[INFO] [stdout] 12 |     renderer: Renderer,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 13 |     show_controls: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 14 |     volume: f32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     selected_preset: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `render`, `ui_content`, `volume`, and `selected_preset` are never used
[INFO] [stdout]    --> src/ui/mod.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl UserInterface {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     fn ui_content(ctx: &egui::Context, show_controls: &mut bool, volume: &mut f32, selected_preset: &mut usize) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn volume(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn selected_preset(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update` are never used
[INFO] [stdout]   --> src/audio/fft.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 79 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 111 |     pub fn new(sample_rate: f32, fft_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     fn hann_window(size: usize) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `detect_beat`, and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(sample_rate: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioPlayback` is never constructed
[INFO] [stdout]  --> src/audio/playback.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct AudioPlayback {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/playback.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  23 |     pub fn new() -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub async fn load_file<P: AsRef<Path>>(&mut self, path: P) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn play(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn pause(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn stop(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_volume(&self, volume: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn is_finished(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_current_audio_frame(&mut self) -> AudioFrame {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn convert_to_audio_frame_static(normalized: &NormalizedAudioFeatures, sample_rate: f32, sensitivity: f32) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:75:18
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 75 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `pack_float`, `unpack_float`, `pack_beat_strength`, `unpack_beat_strength`, `from_prescan_frame`, and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 55 |     /// Convert normalized float (0.0-1.0) to u16 (0-65535)
[INFO] [stdout] 56 |     fn pack_float(value: f32) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn unpack_float(value: u16) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     fn pack_beat_strength(strength: f32) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     fn unpack_beat_strength(value: u8) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv`, `load_arv`, and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:173:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 172 |     /// Create a new normalizer with default parameters
[INFO] [stdout] 173 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn normalize(&mut self, raw: &RawAudioFeatures) -> NormalizedAudioFeatures {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     fn normalize_value(&self, value: f32, max_value: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn effective_parameters(&self) -> NormalizationParameters {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn update_observed_ranges(&mut self, raw: &RawAudioFeatures) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/cpu_analyzer.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl CpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 16 |     /// Create a new CPU-based audio analyzer
[INFO] [stdout] 17 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `new_standalone` are never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated functions in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub async fn new_standalone(sample_rate: f32, chunk_size: usize) -> Result<Self> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `set_manual_effect`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn set_manual_effect(&mut self, effect_name: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioPlayback` is never constructed
[INFO] [stdout]  --> src/audio/playback.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct AudioPlayback {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/playback.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  23 |     pub fn new() -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub async fn load_file<P: AsRef<Path>>(&mut self, path: P) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn play(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn pause(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn stop(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_volume(&self, volume: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn is_finished(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_current_audio_frame(&mut self) -> AudioFrame {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn convert_to_audio_frame_static(normalized: &NormalizedAudioFeatures, sample_rate: f32, sensitivity: f32) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `prescan_file`, `load_prescan_data`, `load_audio_file`, `update_statistics`, and `classify_content` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_prescan_frame` is never used
[INFO] [stdout]   --> src/audio/arv_format.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load_arv` is never used
[INFO] [stdout]    --> src/audio/arv_format.rs:164:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_adaptive`, `with_parameters`, `get_parameters`, `save_parameters`, and `load_parameters` are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GraphicsEngine` is never constructed
[INFO] [stdout]   --> src/graphics/engine.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update_view_proj` are never used
[INFO] [stdout]    --> src/graphics/engine.rs:84:8
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl Uniforms {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  84 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     fn update_view_proj(&mut self, width: f32, height: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/graphics/engine.rs:124:18
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- associated items in this implementation
[INFO] [stdout] 124 |     pub async fn new(window: &'a Window) -> Result<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     fn create_fullscreen_quad() -> Vec<Vertex> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     pub fn resize(&mut self, new_size: winit::dpi::PhysicalSize<u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn render(&mut self, audio_frame: &AudioFrame, _window: &Window) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn psychedelic_manager_mut(&mut self) -> &mut PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn psychedelic_manager(&self) -> &PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn cleanup(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn init_gpu_analyzer(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub async fn analyze_audio_gpu(&mut self, audio_data: &[f32]) -> Option<GpuAudioFeatures> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn gpu_features_to_audio_frame(&self, gpu_features: &GpuAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ShaderManager` is never constructed
[INFO] [stdout]  --> src/graphics/shader.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ShaderManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `load_shader`, `create_pipeline`, and `get_pipeline` are never used
[INFO] [stdout]   --> src/graphics/shader.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl ShaderManager {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 11 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn load_shader(&mut self, device: &Device, name: &str, source: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn create_pipeline(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn get_pipeline(&self, name: &str) -> Option<&RenderPipeline> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `desc` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Vertex {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn desc() -> wgpu::VertexBufferLayout<'static> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBuffer` is never constructed
[INFO] [stdout]   --> src/graphics/vertex.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct VertexBuffer {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update` are never used
[INFO] [stdout]   --> src/graphics/vertex.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 44 |     pub fn new(device: &wgpu::Device, vertices: &[Vertex]) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextureManager` is never constructed
[INFO] [stdout]  --> src/graphics/texture.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]   9 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PsychedelicManager` is never constructed
[INFO] [stdout]  --> src/effects/psychedelic_manager.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct PsychedelicManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EffectConfig` is never constructed
[INFO] [stdout]   --> src/effects/psychedelic_manager.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct EffectConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:61:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  61 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn update(&mut self, delta_time: f32, audio_frame: &AudioFrame) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     fn analyze_and_set_targets(&mut self, audio_frame: &AudioFrame) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     fn update_transitions(&mut self, delta_time: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     fn update_intensity_scalers(&mut self, audio_frame: &AudioFrame) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn get_effect_weights(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn set_manual_effect(&mut self, effect_name: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `texture_manager` and `uniform_bind_group_layout` are never read
[INFO] [stdout]   --> src/graphics/engine.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     texture_manager: TextureManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     uniform_bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `psychedelic_manager` is never used
[INFO] [stdout]    --> src/graphics/engine.rs:398:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn psychedelic_manager(&self) -> &PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `textures` and `bind_groups` are never read
[INFO] [stdout]  --> src/graphics/texture.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     textures: HashMap<String, wgpu::Texture>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 5 |     bind_groups: HashMap<String, wgpu::BindGroup>,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/audio/playback.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_volume(&self, volume: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_prescan_frame` and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv`, `load_arv`, and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_adaptive`, `with_parameters`, `get_parameters`, `save_parameters`, and `load_parameters` are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData`, `PrescanProcessor`, and `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arv_format::ArvFormat`
[INFO] [stdout]   --> src/audio/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use arv_format::ArvFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `texture_manager` and `uniform_bind_group_layout` are never read
[INFO] [stdout]   --> src/graphics/engine.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     texture_manager: TextureManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     uniform_bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `psychedelic_manager` is never used
[INFO] [stdout]    --> src/graphics/engine.rs:398:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn psychedelic_manager(&self) -> &PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `textures` and `bind_groups` are never read
[INFO] [stdout]  --> src/graphics/texture.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     textures: HashMap<String, wgpu::Texture>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 5 |     bind_groups: HashMap<String, wgpu::BindGroup>,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/audio/playback.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_volume(&self, volume: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `pack_float`, `unpack_float`, `pack_beat_strength`, `unpack_beat_strength`, `from_prescan_frame`, and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 55 |     /// Convert normalized float (0.0-1.0) to u16 (0-65535)
[INFO] [stdout] 56 |     fn pack_float(value: f32) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn unpack_float(value: u16) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     fn pack_beat_strength(strength: f32) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     fn unpack_beat_strength(value: u8) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv`, `load_arv`, and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_adaptive`, `with_parameters`, `get_parameters`, `save_parameters`, and `load_parameters` are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData`, `PrescanProcessor`, and `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arv_format::ArvFormat`
[INFO] [stdout]   --> src/audio/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use arv_format::ArvFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData` and `PrescanProcessor`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^                        ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData` and `PrescanProcessor`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^                        ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData`, `PrescanProcessor`, and `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arv_format::ArvFormat`
[INFO] [stdout]   --> src/audio/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use arv_format::ArvFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GpuAudioAnalyzer` and `GpuAudioFeatures`
[INFO] [stdout]   --> src/audio/mod.rs:20:24
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use gpu_analyzer::{GpuAudioAnalyzer, GpuAudioFeatures};
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PrescanData`, `PrescanProcessor`, and `SynchronizedPlayback`
[INFO] [stdout]   --> src/audio/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use prescan::{PrescanData, SynchronizedPlayback, PrescanProcessor};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arv_format::ArvFormat`
[INFO] [stdout]   --> src/audio/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use arv_format::ArvFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sensitivity_factor` is never read
[INFO] [stdout]   --> src/audio/playback.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct AudioPlayback {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     sensitivity_factor: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/playback.rs:92:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn play(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn pause(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn stop(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_volume(&self, volume: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn is_finished(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_current_audio_frame(&mut self) -> AudioFrame {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn convert_to_audio_frame_static(normalized: &NormalizedAudioFeatures, sample_rate: f32, sensitivity: f32) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_prescan_frame` and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv`, `load_arv`, and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_adaptive`, `with_parameters`, `get_parameters`, `save_parameters`, and `load_parameters` are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `set_manual_effect`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn set_manual_effect(&mut self, effect_name: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/audio/playback.rs:99:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn pause(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn stop(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_volume(&self, volume: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn is_finished(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_prescan_frame` and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv`, `load_arv`, and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_adaptive`, `with_parameters`, `get_parameters`, `save_parameters`, and `load_parameters` are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `texture_manager`, `uniform_bind_group_layout`, and `gpu_analyzer` are never read
[INFO] [stdout]   --> src/graphics/engine.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     texture_manager: TextureManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     uniform_bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     gpu_analyzer: Option<GpuAudioAnalyzer>, // GPU-accelerated audio analysis
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `psychedelic_manager_mut`, `psychedelic_manager`, `cleanup`, `init_gpu_analyzer`, `analyze_audio_gpu`, and `gpu_features_to_audio_frame` are never used
[INFO] [stdout]    --> src/graphics/engine.rs:393:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn psychedelic_manager_mut(&mut self) -> &mut PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn psychedelic_manager(&self) -> &PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn cleanup(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn init_gpu_analyzer(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub async fn analyze_audio_gpu(&mut self, audio_data: &[f32]) -> Option<GpuAudioFeatures> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn gpu_features_to_audio_frame(&self, gpu_features: &GpuAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `textures` and `bind_groups` are never read
[INFO] [stdout]  --> src/graphics/texture.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     textures: HashMap<String, wgpu::Texture>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 5 |     bind_groups: HashMap<String, wgpu::BindGroup>,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `context`, `renderer`, `show_controls`, `volume`, and `selected_preset` are never read
[INFO] [stdout]   --> src/ui/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct UserInterface {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 10 |     context: egui::Context,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 11 |     state: State,
[INFO] [stdout] 12 |     renderer: Renderer,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 13 |     show_controls: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 14 |     volume: f32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     selected_preset: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `render`, `ui_content`, `volume`, and `selected_preset` are never used
[INFO] [stdout]    --> src/ui/mod.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl UserInterface {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     fn ui_content(ctx: &egui::Context, show_controls: &mut bool, volume: &mut f32, selected_preset: &mut usize) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn volume(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn selected_preset(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `set_manual_effect`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn set_manual_effect(&mut self, effect_name: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `texture_manager`, `uniform_bind_group_layout`, and `gpu_analyzer` are never read
[INFO] [stdout]   --> src/graphics/engine.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     texture_manager: TextureManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     uniform_bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     gpu_analyzer: Option<GpuAudioAnalyzer>, // GPU-accelerated audio analysis
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `init_gpu_analyzer`, `analyze_audio_gpu`, and `gpu_features_to_audio_frame` are never used
[INFO] [stdout]    --> src/graphics/engine.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn init_gpu_analyzer(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub async fn analyze_audio_gpu(&mut self, audio_data: &[f32]) -> Option<GpuAudioFeatures> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn gpu_features_to_audio_frame(&self, gpu_features: &GpuAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `textures` and `bind_groups` are never read
[INFO] [stdout]  --> src/graphics/texture.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     textures: HashMap<String, wgpu::Texture>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 5 |     bind_groups: HashMap<String, wgpu::BindGroup>,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sensitivity_factor` is never read
[INFO] [stdout]   --> src/audio/playback.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct AudioPlayback {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     sensitivity_factor: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/playback.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_current_audio_frame(&mut self) -> AudioFrame {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn convert_to_audio_frame_static(normalized: &NormalizedAudioFeatures, sample_rate: f32, sensitivity: f32) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `pack_float`, `pack_beat_strength`, and `from_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] 55 |     /// Convert normalized float (0.0-1.0) to u16 (0-65535)
[INFO] [stdout] 56 |     fn pack_float(value: f32) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     fn pack_beat_strength(strength: f32) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv` and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn normalize(&mut self, raw: &RawAudioFeatures) -> NormalizedAudioFeatures {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     fn normalize_value(&self, value: f32, max_value: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn effective_parameters(&self) -> NormalizationParameters {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn update_observed_ranges(&mut self, raw: &RawAudioFeatures) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue`
[INFO] [stdout]   --> src/graphics/texture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         queue: &wgpu::Queue,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_queue`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `texture_manager`, `uniform_bind_group_layout`, and `gpu_analyzer` are never read
[INFO] [stdout]   --> src/graphics/engine.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     texture_manager: TextureManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     uniform_bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     gpu_analyzer: Option<GpuAudioAnalyzer>, // GPU-accelerated audio analysis
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `init_gpu_analyzer`, `analyze_audio_gpu`, and `gpu_features_to_audio_frame` are never used
[INFO] [stdout]    --> src/graphics/engine.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn init_gpu_analyzer(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub async fn analyze_audio_gpu(&mut self, audio_data: &[f32]) -> Option<GpuAudioFeatures> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn gpu_features_to_audio_frame(&self, gpu_features: &GpuAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `textures` and `bind_groups` are never read
[INFO] [stdout]  --> src/graphics/texture.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     textures: HashMap<String, wgpu::Texture>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 5 |     bind_groups: HashMap<String, wgpu::BindGroup>,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `convert_to_audio_frame`, `get_current_audio_chunk`, `get_full_audio_buffer`, and `set_sensitivity` are never used
[INFO] [stdout]    --> src/audio/playback.rs:296:8
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_prescan_frame` and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv`, `load_arv`, and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_adaptive`, `with_parameters`, `get_parameters`, `save_parameters`, and `load_parameters` are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `texture_manager`, `uniform_bind_group_layout`, and `gpu_analyzer` are never read
[INFO] [stdout]   --> src/graphics/engine.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     texture_manager: TextureManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     uniform_bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     gpu_analyzer: Option<GpuAudioAnalyzer>, // GPU-accelerated audio analysis
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `init_gpu_analyzer`, `analyze_audio_gpu`, and `gpu_features_to_audio_frame` are never used
[INFO] [stdout]    --> src/graphics/engine.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn init_gpu_analyzer(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub async fn analyze_audio_gpu(&mut self, audio_data: &[f32]) -> Option<GpuAudioFeatures> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn gpu_features_to_audio_frame(&self, gpu_features: &GpuAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `textures` and `bind_groups` are never read
[INFO] [stdout]  --> src/graphics/texture.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     textures: HashMap<String, wgpu::Texture>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 5 |     bind_groups: HashMap<String, wgpu::BindGroup>,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sensitivity_factor` is never read
[INFO] [stdout]   --> src/audio/playback.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct AudioPlayback {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     sensitivity_factor: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/playback.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_current_audio_frame(&mut self) -> AudioFrame {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn convert_to_audio_frame_static(normalized: &NormalizedAudioFeatures, sample_rate: f32, sensitivity: f32) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_prescan_frame` is never used
[INFO] [stdout]   --> src/audio/arv_format.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv` and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn normalize(&mut self, raw: &RawAudioFeatures) -> NormalizedAudioFeatures {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     fn normalize_value(&self, value: f32, max_value: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn effective_parameters(&self) -> NormalizationParameters {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn update_observed_ranges(&mut self, raw: &RawAudioFeatures) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/audio/playback.rs:99:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn pause(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn stop(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_volume(&self, volume: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn is_finished(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_full_audio_buffer(&self) -> &Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `pack_float`, `unpack_float`, `pack_beat_strength`, `unpack_beat_strength`, `from_prescan_frame`, and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 55 |     /// Convert normalized float (0.0-1.0) to u16 (0-65535)
[INFO] [stdout] 56 |     fn pack_float(value: f32) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn unpack_float(value: u16) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     fn pack_beat_strength(strength: f32) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     fn unpack_beat_strength(value: u8) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv`, `load_arv`, and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_adaptive`, `with_parameters`, `get_parameters`, `save_parameters`, and `load_parameters` are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `texture_manager`, `uniform_bind_group_layout`, and `gpu_analyzer` are never read
[INFO] [stdout]   --> src/graphics/engine.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphicsEngine<'a> {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     texture_manager: TextureManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     uniform_bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     gpu_analyzer: Option<GpuAudioAnalyzer>, // GPU-accelerated audio analysis
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `psychedelic_manager_mut`, `psychedelic_manager`, `cleanup`, `init_gpu_analyzer`, `analyze_audio_gpu`, and `gpu_features_to_audio_frame` are never used
[INFO] [stdout]    --> src/graphics/engine.rs:393:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl<'a> GraphicsEngine<'a> {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn psychedelic_manager_mut(&mut self) -> &mut PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn psychedelic_manager(&self) -> &PsychedelicManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn cleanup(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn init_gpu_analyzer(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub async fn analyze_audio_gpu(&mut self, audio_data: &[f32]) -> Option<GpuAudioFeatures> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn gpu_features_to_audio_frame(&self, gpu_features: &GpuAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/graphics/vertex.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl VertexBuffer {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&self, queue: &wgpu::Queue, vertices: &[Vertex]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `textures` and `bind_groups` are never read
[INFO] [stdout]  --> src/graphics/texture.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextureManager {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     textures: HashMap<String, wgpu::Texture>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 5 |     bind_groups: HashMap<String, wgpu::BindGroup>,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_audio_texture`, `update_audio_texture`, and `get_bind_group` are never used
[INFO] [stdout]    --> src/graphics/texture.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn create_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn update_audio_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_bind_group(&self, name: &str) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `context`, `renderer`, `show_controls`, `volume`, and `selected_preset` are never read
[INFO] [stdout]   --> src/ui/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct UserInterface {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 10 |     context: egui::Context,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 11 |     state: State,
[INFO] [stdout] 12 |     renderer: Renderer,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 13 |     show_controls: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 14 |     volume: f32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     selected_preset: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `render`, `ui_content`, `volume`, and `selected_preset` are never used
[INFO] [stdout]    --> src/ui/mod.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl UserInterface {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     fn ui_content(ctx: &egui::Context, show_controls: &mut bool, volume: &mut f32, selected_preset: &mut usize) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn volume(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn selected_preset(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `set_manual_effect`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn set_manual_effect(&mut self, effect_name: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/audio/fft.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TempoDetector {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn update(&mut self, beat_detected: bool, time_delta: f32) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/fft.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl AudioAnalyzer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn analyze(&mut self, audio_data: &[f32]) -> AudioFrame {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn apply_window(&self, audio_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn compute_fft(&self, windowed_data: &[f32]) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn extract_frequency_bands(&self, spectrum: &[f32]) -> FrequencyBands {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn average_range(data: &[f32], start: usize, end: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn calculate_spectral_centroid(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn calculate_spectral_rolloff(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn calculate_zero_crossing_rate(&self, audio_data: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn calculate_spectral_flux(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn calculate_onset_strength(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     fn calculate_pitch_confidence(&self, spectrum: &[f32]) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn calculate_dynamic_range(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `detect_beat` and `calculate_variance` are never used
[INFO] [stdout]   --> src/audio/beat_detector.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BeatDetector {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn detect_beat(&mut self, bands: &FrequencyBands) -> (bool, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn calculate_variance(&self, data: &VecDeque<f32>, mean: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sensitivity_factor` is never read
[INFO] [stdout]   --> src/audio/playback.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct AudioPlayback {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     sensitivity_factor: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/playback.rs:92:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AudioPlayback {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn play(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn pause(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn stop(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_volume(&self, volume: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn is_finished(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_current_audio_frame(&mut self) -> AudioFrame {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn convert_to_audio_frame_static(normalized: &NormalizedAudioFeatures, sample_rate: f32, sensitivity: f32) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn convert_to_audio_frame(&self, normalized: &NormalizedAudioFeatures) -> AudioFrame {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn get_current_audio_chunk(&mut self) -> Vec<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn get_sensitivity(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_sensitivity(&mut self, sensitivity: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn adjust_sensitivity(&mut self, delta: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn analyzer(&self) -> Option<&Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn analyzer_mut(&mut self) -> Option<&mut Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fft_buffer` and `num_frequency_bands` are never read
[INFO] [stdout]   --> src/audio/gpu_analyzer.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct GpuAudioAnalyzer {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fft_buffer: wgpu::Buffer,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     num_frequency_bands: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/prescan.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PrescanProcessor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 107 |     pub fn new(sample_rate: f32, chunk_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn prescan_file<P: AsRef<Path>>(&mut self, file_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn save_prescan_data<P: AsRef<Path>>(prescan_data: &PrescanData, output_path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn load_prescan_data<P: AsRef<Path>>(input_path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn load_audio_file<P: AsRef<Path>>(&self, file_path: P) -> Result<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_statistics(&self, stats: &mut AnalysisStatistics, frame: &AudioFrame,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn classify_content(&self, stats: &mut AnalysisStatistics, frames: &[PrescanFrame]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_synchronized_frame`, `get_statistics`, and `get_file_info` are never used
[INFO] [stdout]    --> src/audio/prescan.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl SynchronizedPlayback {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(prescan_data: PrescanData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_synchronized_frame(&mut self, playback_time_seconds: f32) -> Option<&PrescanFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn get_statistics(&self) -> &AnalysisStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn get_file_info(&self) -> &FileInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `pack_float`, `unpack_float`, `pack_beat_strength`, `unpack_beat_strength`, `from_prescan_frame`, and `to_prescan_frame` are never used
[INFO] [stdout]   --> src/audio/arv_format.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl PackedFrame {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 55 |     /// Convert normalized float (0.0-1.0) to u16 (0-65535)
[INFO] [stdout] 56 |     fn pack_float(value: f32) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn unpack_float(value: u16) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     fn pack_beat_strength(strength: f32) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     fn unpack_beat_strength(value: u8) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn from_prescan_frame(frame: &PrescanFrame, _timestamp: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn to_prescan_frame(&self, timestamp: f32, estimated_bpm: f32) -> PrescanFrame {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_arv`, `load_arv`, and `compression_ratio` are never used
[INFO] [stdout]    --> src/audio/arv_format.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl ArvFormat {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 123 |     /// Save prescan data in compact ARV binary format
[INFO] [stdout] 124 |     pub fn save_arv<P: AsRef<std::path::Path>>(prescan_data: &PrescanData, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn load_arv<P: AsRef<std::path::Path>>(path: P) -> Result<PrescanData> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn compression_ratio(arv_size: u64, json_size: u64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_adaptive`, `with_parameters`, `get_parameters`, `save_parameters`, and `load_parameters` are never used
[INFO] [stdout]    --> src/audio/feature_normalizer.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | impl FeatureNormalizer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn new_adaptive() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn with_parameters(parameters: NormalizationParameters) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn get_parameters(&self) -> &NormalizationParameters {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn save_parameters(&self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn load_parameters(&mut self, path: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/audio/gpu_analyzer_wrapper.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl GpuAudioAnalyzer {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 18 |     /// Create a new GPU-based audio analyzer
[INFO] [stdout] 19 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_with_context` is never used
[INFO] [stdout]    --> src/audio/gpu_analyzer_wrapper.rs:112:18
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl GpuAudioAnalyzer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 111 |     /// Helper method to analyze with external GPU context
[INFO] [stdout] 112 |     pub async fn analyze_with_context(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_current_preset`, `set_current_preset`, `get_presets`, and `current_preset_index` are never used
[INFO] [stdout]    --> src/effects/preset.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_current_preset(&self) -> &VisualizerPreset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_current_preset(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn get_presets(&self) -> &[VisualizerPreset] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn current_preset_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intensity_scalers`, `set_manual_effect`, `config_mut`, `config`, and `get_debug_info` are never used
[INFO] [stdout]    --> src/effects/psychedelic_manager.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl PsychedelicManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn get_intensity_scalers(&self) -> &HashMap<String, f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn set_manual_effect(&mut self, effect_name: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn config_mut(&mut self) -> &mut EffectConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn config(&self) -> &EffectConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_debug_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 21s
[INFO] running `Command { std: "docker" "inspect" "cd0126ad265d1d467488f51bc7e2478d0342374ae388d3945f4bc8503305c2da", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cd0126ad265d1d467488f51bc7e2478d0342374ae388d3945f4bc8503305c2da", kill_on_drop: false }`
[INFO] [stdout] cd0126ad265d1d467488f51bc7e2478d0342374ae388d3945f4bc8503305c2da
