[INFO] cloning repository https://github.com/hvalfangst/Rust-Synthesizer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hvalfangst/Rust-Synthesizer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhvalfangst%2FRust-Synthesizer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhvalfangst%2FRust-Synthesizer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1687aa17b2ef47a88292bf0877d89ffb587449a4
[INFO] checking hvalfangst/Rust-Synthesizer against try#b1f2594eac607c1f051534800237eeedb5590a49 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhvalfangst%2FRust-Synthesizer" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hvalfangst/Rust-Synthesizer
[INFO] finished tweaking git repo https://github.com/hvalfangst/Rust-Synthesizer
[INFO] tweaked toml for git repo https://github.com/hvalfangst/Rust-Synthesizer written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hvalfangst/Rust-Synthesizer on toolchain b1f2594eac607c1f051534800237eeedb5590a49
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hvalfangst/Rust-Synthesizer 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" "+b1f2594eac607c1f051534800237eeedb5590a49" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ebc8eb43c59b7fc7cfac2dbae65fe772049776ea040991ef03e8fb0381293f33
[INFO] running `Command { std: "docker" "start" "-a" "ebc8eb43c59b7fc7cfac2dbae65fe772049776ea040991ef03e8fb0381293f33", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ebc8eb43c59b7fc7cfac2dbae65fe772049776ea040991ef03e8fb0381293f33", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ebc8eb43c59b7fc7cfac2dbae65fe772049776ea040991ef03e8fb0381293f33", kill_on_drop: false }`
[INFO] [stdout] ebc8eb43c59b7fc7cfac2dbae65fe772049776ea040991ef03e8fb0381293f33
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9b2235edeead43cdeebb898519edf282f8804babb82d40ef27d249da7277f792
[INFO] running `Command { std: "docker" "start" "-a" "9b2235edeead43cdeebb898519edf282f8804babb82d40ef27d249da7277f792", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.85
[INFO] [stderr]    Compiling memchr v2.7.3
[INFO] [stderr]    Compiling xml-rs v0.8.20
[INFO] [stderr]    Compiling nom v5.1.3
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]    Compiling regex-syntax v0.8.4
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling unicode-width v0.1.13
[INFO] [stderr]    Compiling libloading v0.8.3
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]    Compiling wayland-sys v0.29.5
[INFO] [stderr]    Compiling humantime v2.1.0
[INFO] [stderr]    Compiling vec_map v0.8.2
[INFO] [stderr]    Compiling strsim v0.8.0
[INFO] [stderr]    Compiling bindgen v0.56.0
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]     Checking bytemuck v1.16.0
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]    Compiling termcolor v1.4.1
[INFO] [stderr]    Compiling ansi_term v0.12.1
[INFO] [stderr]    Compiling log v0.4.21
[INFO] [stderr]    Compiling wayland-scanner v0.29.5
[INFO] [stderr]    Compiling clap v2.34.0
[INFO] [stderr]    Compiling which v3.1.1
[INFO] [stderr]    Compiling peeking_take_while v0.1.2
[INFO] [stderr]    Compiling lazycell v1.3.0
[INFO] [stderr]    Compiling shlex v0.1.1
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]     Checking miniz_oxide v0.7.3
[INFO] [stderr]     Checking nix v0.24.3
[INFO] [stderr]    Compiling regex-automata v0.4.7
[INFO] [stderr]    Compiling wayland-client v0.29.5
[INFO] [stderr]    Compiling cexpr v0.4.0
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]     Checking symphonia-core v0.5.4
[INFO] [stderr]     Checking wayland-commons v0.29.5
[INFO] [stderr]     Checking either v1.12.0
[INFO] [stderr]     Checking downcast-rs v1.2.1
[INFO] [stderr]     Checking flate2 v1.0.30
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]    Compiling wayland-protocols v0.29.5
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking symphonia-metadata v0.5.4
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]    Compiling cc v1.0.99
[INFO] [stderr]     Checking symphonia-bundle-mp3 v0.5.4
[INFO] [stderr]    Compiling regex v1.10.5
[INFO] [stderr]     Checking jpeg-decoder v0.3.1
[INFO] [stderr]     Checking alsa v0.9.0
[INFO] [stderr]    Compiling minifb v0.21.0
[INFO] [stderr]    Compiling env_logger v0.8.4
[INFO] [stderr]     Checking flume v0.11.0
[INFO] [stderr]     Checking ogg v0.8.0
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking half v2.4.1
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking cty v0.2.2
[INFO] [stderr]     Checking dasp_sample v0.11.0
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking wayland-cursor v0.29.5
[INFO] [stderr]     Checking exr v1.72.0
[INFO] [stderr]     Checking raw-window-handle v0.4.3
[INFO] [stderr]     Checking lewton v0.10.2
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking png v0.17.13
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking symphonia v0.5.4
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking claxon v0.4.3
[INFO] [stderr]     Checking hound v3.5.1
[INFO] [stderr]     Checking rodio v0.17.3
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]    Compiling xkbcommon-sys v0.7.5
[INFO] [stderr]     Checking xkb v0.2.1
[INFO] [stderr]     Checking synthesizer v0.5.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `EffectWrapper`
[INFO] [stdout]  --> src/state/utils.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::effects::{EffectWrapper, AudioEffect, DelayEffect, ReverbEffect, FlangerEffect};
[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: `draw_control_buttons`
[INFO] [stdout]  --> src/state/utils.rs:9:47
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::graphics::draw::{draw_adsr_faders, draw_control_buttons, draw_display_sprite_single, draw_idle_key_sprites, draw_idle_tang...
[INFO] [stdout]   |                                               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::adsr_envelope::ADSREnvelope`
[INFO] [stdout]   --> src/state/utils.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::waveforms::adsr_envelope::ADSREnvelope;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::sawtooth_wave::SawtoothWave`
[INFO] [stdout]   --> src/state/utils.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::waveforms::sawtooth_wave::SawtoothWave;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::sine_wave::SineWave`
[INFO] [stdout]   --> src/state/utils.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::waveforms::sine_wave::SineWave;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::square_wave::SquareWave`
[INFO] [stdout]   --> src/state/utils.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::waveforms::square_wave::SquareWave;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::triangle_wave::TriangleWave`
[INFO] [stdout]   --> src/state/utils.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::waveforms::triangle_wave::TriangleWave;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AMPLITUDE` and `Waveform`
[INFO] [stdout]   --> src/state/utils.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::waveforms::{Waveform, AMPLITUDE};
[INFO] [stdout]    |                        ^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyRepeat`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:1:19
[INFO] [stdout]   |
[INFO] [stdout] 1 | use minifb::{Key, KeyRepeat, Window};
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Source`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rodio::{Sink, Source};
[INFO] [stdout]   |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::music_theory::note::Note`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::music_theory::note::Note;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::adsr_envelope::ADSREnvelope`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::waveforms::adsr_envelope::ADSREnvelope;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::sine_wave::SineWave`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::waveforms::sine_wave::SineWave;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::square_wave::SquareWave`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::waveforms::square_wave::SquareWave;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::triangle_wave::TriangleWave`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::waveforms::triangle_wave::TriangleWave;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AMPLITUDE` and `Waveform`
[INFO] [stdout]   --> src/input/commands/keyboard_input.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::waveforms::{Waveform, AMPLITUDE};
[INFO] [stdout]    |                        ^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::sawtooth_wave::SawtoothWave`
[INFO] [stdout]   --> src/input/commands/keyboard_input.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::waveforms::sawtooth_wave::SawtoothWave;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OCTAVE_LOWER_BOUND` and `OCTAVE_UPPER_BOUND`
[INFO] [stdout]  --> src/input/commands/octave_adjust.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::music_theory::{OCTAVE_LOWER_BOUND, OCTAVE_UPPER_BOUND};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `handle_musical_note`
[INFO] [stdout]  --> src/input/commands/recording_control.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::state::utils::{handle_musical_note};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Key`
[INFO] [stdout]  --> src/input/commands/track_control.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use minifb::{Key, Window};
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EffectWrapper`
[INFO] [stdout]  --> src/state/utils.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::effects::{EffectWrapper, AudioEffect, DelayEffect, ReverbEffect, FlangerEffect};
[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: `std::time::Duration`
[INFO] [stdout]  --> src/audio/mixer.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RecordedNote`
[INFO] [stdout]  --> src/audio/mixer.rs:3:47
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::state::{State, Track, MasterTrack, RecordedNote};
[INFO] [stdout]   |                                               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `draw_control_buttons`
[INFO] [stdout]  --> src/state/utils.rs:9:47
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::graphics::draw::{draw_adsr_faders, draw_control_buttons, draw_display_sprite_single, draw_idle_key_sprites, draw_idle_tang...
[INFO] [stdout]   |                                               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::effects::AudioEffect`
[INFO] [stdout]   --> src/audio/mixer.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::effects::AudioEffect;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::adsr_envelope::ADSREnvelope`
[INFO] [stdout]   --> src/state/utils.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::waveforms::adsr_envelope::ADSREnvelope;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::sawtooth_wave::SawtoothWave`
[INFO] [stdout]   --> src/state/utils.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::waveforms::sawtooth_wave::SawtoothWave;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::sine_wave::SineWave`
[INFO] [stdout]   --> src/state/utils.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::waveforms::sine_wave::SineWave;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::square_wave::SquareWave`
[INFO] [stdout]   --> src/state/utils.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::waveforms::square_wave::SquareWave;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::triangle_wave::TriangleWave`
[INFO] [stdout]   --> src/state/utils.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::waveforms::triangle_wave::TriangleWave;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AMPLITUDE` and `Waveform`
[INFO] [stdout]   --> src/state/utils.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::waveforms::{Waveform, AMPLITUDE};
[INFO] [stdout]    |                        ^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyRepeat`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:1:19
[INFO] [stdout]   |
[INFO] [stdout] 1 | use minifb::{Key, KeyRepeat, Window};
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Source`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rodio::{Sink, Source};
[INFO] [stdout]   |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::music_theory::note::Note`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::music_theory::note::Note;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::adsr_envelope::ADSREnvelope`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::waveforms::adsr_envelope::ADSREnvelope;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::sine_wave::SineWave`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::waveforms::sine_wave::SineWave;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::square_wave::SquareWave`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::waveforms::square_wave::SquareWave;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::triangle_wave::TriangleWave`
[INFO] [stdout]  --> src/input/commands/keyboard_input.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::waveforms::triangle_wave::TriangleWave;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AMPLITUDE` and `Waveform`
[INFO] [stdout]   --> src/input/commands/keyboard_input.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::waveforms::{Waveform, AMPLITUDE};
[INFO] [stdout]    |                        ^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::waveforms::sawtooth_wave::SawtoothWave`
[INFO] [stdout]   --> src/input/commands/keyboard_input.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::waveforms::sawtooth_wave::SawtoothWave;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OCTAVE_LOWER_BOUND` and `OCTAVE_UPPER_BOUND`
[INFO] [stdout]  --> src/input/commands/octave_adjust.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::music_theory::{OCTAVE_LOWER_BOUND, OCTAVE_UPPER_BOUND};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `handle_musical_note`
[INFO] [stdout]  --> src/input/commands/recording_control.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::state::utils::{handle_musical_note};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Key`
[INFO] [stdout]  --> src/input/commands/track_control.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use minifb::{Key, Window};
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/audio/mixer.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RecordedNote`
[INFO] [stdout]  --> src/audio/mixer.rs:3:47
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::state::{State, Track, MasterTrack, RecordedNote};
[INFO] [stdout]   |                                               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::effects::AudioEffect`
[INFO] [stdout]   --> src/audio/mixer.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::effects::AudioEffect;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/state/updaters/audio_updater.rs:13:45
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn update(&self, state: &mut State, sink: &mut Sink) {
[INFO] [stdout]    |                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]   --> src/state/updaters/audio_updater.rs:33:40
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn update_frequency_display(&self, state: &mut State) {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]   --> src/state/updaters/recording_updater.rs:41:38
[INFO] [stdout]    |
[INFO] [stdout] 41 |     fn handle_playback_timing(&self, state: &mut State) {
[INFO] [stdout]    |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/state/updaters/audio_updater.rs:13:45
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn update(&self, state: &mut State, sink: &mut Sink) {
[INFO] [stdout]    |                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]   --> src/state/updaters/audio_updater.rs:33:40
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn update_frequency_display(&self, state: &mut State) {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]   --> src/state/updaters/recording_updater.rs:41:38
[INFO] [stdout]    |
[INFO] [stdout] 41 |     fn handle_playback_timing(&self, state: &mut State) {
[INFO] [stdout]    |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sprites`
[INFO] [stdout]    --> src/graphics/draw.rs:186:40
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn draw_adsr_faders(state: &State, sprites: &Sprites, window_buffer: &mut Vec<u32>) {
[INFO] [stdout]     |                                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sprites`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sprites`
[INFO] [stdout]    --> src/graphics/draw.rs:186:40
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn draw_adsr_faders(state: &State, sprites: &Sprites, window_buffer: &mut Vec<u32>) {
[INFO] [stdout]     |                                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sprites`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]   --> src/input/commands/keyboard_input.rs:26:42
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn execute(&self, state: &mut State, window: &mut Window, sink: &mut Sink) {
[INFO] [stdout]    |                                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/input/commands/mouse_input.rs:77:51
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn handle_adsr_fader_mouse(state: &mut State, sink: &mut Sink) {
[INFO] [stdout]    |                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]   --> src/input/commands/keyboard_input.rs:26:42
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn execute(&self, state: &mut State, window: &mut Window, sink: &mut Sink) {
[INFO] [stdout]    |                                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/input/commands/mouse_input.rs:77:51
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn handle_adsr_fader_mouse(state: &mut State, sink: &mut Sink) {
[INFO] [stdout]    |                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]    --> src/input/commands/mouse_input.rs:362:56
[INFO] [stdout]     |
[INFO] [stdout] 362 | pub fn handle_effects_buttons_mouse(state: &mut State, sink: &mut Sink) {
[INFO] [stdout]     |                                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track_width`
[INFO] [stdout]    --> src/input/commands/mouse_input.rs:423:9
[INFO] [stdout]     |
[INFO] [stdout] 423 |     let track_width = 350; // Updated width for transport controls
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_track_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/input/commands/waveform_toggle.rs:10:63
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn execute(&self, state: &mut State, window: &mut Window, sink: &mut Sink) {
[INFO] [stdout]    |                                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/input/commands/octave_adjust.rs:19:63
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn execute(&self, state: &mut State, window: &mut Window, sink: &mut Sink) {
[INFO] [stdout]    |                                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/input/commands/adsr_control.rs:39:63
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn execute(&self, state: &mut State, window: &mut Window, sink: &mut Sink) {
[INFO] [stdout]    |                                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]    --> src/input/commands/mouse_input.rs:362:56
[INFO] [stdout]     |
[INFO] [stdout] 362 | pub fn handle_effects_buttons_mouse(state: &mut State, sink: &mut Sink) {
[INFO] [stdout]     |                                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/input/commands/effects_toggle.rs:34:63
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn execute(&self, state: &mut State, window: &mut Window, sink: &mut Sink) {
[INFO] [stdout]    |                                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track_width`
[INFO] [stdout]    --> src/input/commands/mouse_input.rs:423:9
[INFO] [stdout]     |
[INFO] [stdout] 423 |     let track_width = 350; // Updated width for transport controls
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_track_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/input/commands/waveform_toggle.rs:10:63
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn execute(&self, state: &mut State, window: &mut Window, sink: &mut Sink) {
[INFO] [stdout]    |                                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/input/commands/octave_adjust.rs:19:63
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn execute(&self, state: &mut State, window: &mut Window, sink: &mut Sink) {
[INFO] [stdout]    |                                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/input/commands/adsr_control.rs:39:63
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn execute(&self, state: &mut State, window: &mut Window, sink: &mut Sink) {
[INFO] [stdout]    |                                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track`
[INFO] [stdout]   --> src/input/commands/track_control.rs:49:21
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let track = &state.tracks[current_track_id];
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_track`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track`
[INFO] [stdout]   --> src/input/commands/track_control.rs:55:21
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 let track = &state.tracks[current_track_id];
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_track`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sink`
[INFO] [stdout]   --> src/input/commands/effects_toggle.rs:34:63
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn execute(&self, state: &mut State, window: &mut Window, sink: &mut Sink) {
[INFO] [stdout]    |                                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_sink`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track`
[INFO] [stdout]   --> src/input/commands/track_control.rs:49:21
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let track = &state.tracks[current_track_id];
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_track`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track`
[INFO] [stdout]   --> src/input/commands/track_control.rs:55:21
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 let track = &state.tracks[current_track_id];
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_track`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DURATION` is never used
[INFO] [stdout]   --> src/waveforms/mod.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const DURATION: f32 = 0.19;
[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 `release` is never used
[INFO] [stdout]   --> src/waveforms/adsr_envelope.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | / impl<S> ADSREnvelope<S>
[INFO] [stdout] 21 | | where
[INFO] [stdout] 22 | |     S: Source<Item = f32>,
[INFO] [stdout]    | |__________________________- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 46 |       pub fn release(&mut self) {
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/state/mod.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MasterTrack {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 63 |     pub volume: f32,        // Master volume 0.0 - 1.0
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 64 |     pub delay_enabled: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 65 |     pub reverb_enabled: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub flanger_enabled: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub delay_effect: DelayEffect,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 68 |     pub reverb_effect: ReverbEffect,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 69 |     pub flanger_effect: FlangerEffect,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MasterTrack` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `note`, `octave`, `x`, and `y` are never read
[INFO] [stdout]    --> src/state/mod.rs:97:9
[INFO] [stdout]     |
[INFO] [stdout]  96 | pub struct VisualNote {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout]  97 |     pub note: Note,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]  98 |     pub octave: i32,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub x: f32,
[INFO] [stdout]     |         ^
[INFO] [stdout] 102 |     pub y: f32,
[INFO] [stdout]     |         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VisualNote` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `master_track`, `filter_factor`, `lpf_active`, `delay_effect`, `reverb_effect`, and `flanger_effect` are never read
[INFO] [stdout]    --> src/state/mod.rs:145:9
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub struct State {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub master_track: MasterTrack,   // Master mix bus
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub(crate) filter_factor: f32,
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 154 |     pub(crate) lpf_active: usize,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub delay_effect: DelayEffect,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 184 |     pub reverb_effect: ReverbEffect,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 185 |     pub flanger_effect: FlangerEffect,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/state/mod.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl State {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn apply_lpf(&mut self, sample: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn increase_octave(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn decrease_octave(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn toggle_lpf(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn increase_filter_cutoff(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn decrease_filter_cutoff(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub fn get_current_octave(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     pub fn toggle_waveform(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn increase_attack(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn decrease_attack(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn increase_decay(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn decrease_decay(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn increase_sustain(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn decrease_sustain(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn increase_release(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decrease_release(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub fn attack_normalized(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn decay_normalized(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn sustain_normalized(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 360 |     pub fn start_recording(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn start_playback(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 399 |     pub fn add_visual_note(&mut self, note: Note, octave: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn calculate_adsr_amplitude(&self, time_since_start: f32, is_key_pressed: bool, time_since_release: Option<f32>) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 488 |     pub fn current_track_mut(&mut self) -> &mut Track {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     pub fn toggle_current_track_playback(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EffectsProcessor` is never constructed
[INFO] [stdout]   --> src/state/utils.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct EffectsProcessor<S: Source<Item = f32>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/state/utils.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl<S: Source<Item = f32>> EffectsProcessor<S> {
[INFO] [stdout]    | ----------------------------------------------- associated function in this implementation
[INFO] [stdout] 32 |     fn new(source: S, state: &State) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `numbers`, `knob`, `display_sine`, `display_square`, `bulb`, and `adsr_fader` are never read
[INFO] [stdout]   --> src/graphics/sprites.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Sprites {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 16 |     pub notes: Vec<Sprite>,
[INFO] [stdout] 17 |     pub numbers: Vec<Sprite>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub knob: Vec<Sprite>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 21 |     pub rack: Vec<Sprite>,
[INFO] [stdout] 22 |     pub display_sine: Vec<Sprite>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub display_square: Vec<Sprite>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub octave_fader: Vec<Sprite>,
[INFO] [stdout] 25 |     pub bulb: Vec<Sprite>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 26 |     pub adsr_fader: Vec<Sprite>, // ADSR fader sprites (10 positions for fine control)
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_display_sprite` is never used
[INFO] [stdout]   --> src/graphics/draw.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn draw_display_sprite(sprite: &Vec<Sprite>, buffer: &mut [u32], display_index: usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_bulb_sprite` is never used
[INFO] [stdout]   --> src/graphics/draw.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn draw_bulb_sprite(state: &State, sprites: &Sprites, window_buffer: &mut Vec<u32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_filter_cutoff_knob_sprite` is never used
[INFO] [stdout]   --> src/graphics/draw.rs:92:8
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub fn draw_filter_cutoff_knob_sprite(state: &State, sprites: &Sprites, window_buffer: &mut Vec<u32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_idle_knob_sprite` is never used
[INFO] [stdout]    --> src/graphics/draw.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn draw_idle_knob_sprite(sprites: &Sprites, window_buffer: &mut Vec<u32>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_number_value` is never used
[INFO] [stdout]    --> src/graphics/draw.rs:263:4
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn draw_number_value(x: usize, y: usize, value: u8, sprites: &Sprites, buffer: &mut Vec<u32>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_control_buttons` is never used
[INFO] [stdout]    --> src/graphics/draw.rs:284:8
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub fn draw_control_buttons(state: &State, buffer: &mut Vec<u32>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_button` is never used
[INFO] [stdout]    --> src/graphics/draw.rs:332:4
[INFO] [stdout]     |
[INFO] [stdout] 332 | fn draw_button(x: usize, y: usize, width: usize, height: usize, color: u32, text: &str, buffer: &mut Vec<u32>) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_simple_text` is never used
[INFO] [stdout]    --> src/graphics/draw.rs:358:4
[INFO] [stdout]     |
[INFO] [stdout] 358 | fn draw_simple_text(x: usize, y: usize, text: &str, color: u32, buffer: &mut Vec<u32>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_control_buttons_mouse` is never used
[INFO] [stdout]    --> src/input/commands/mouse_input.rs:300:8
[INFO] [stdout]     |
[INFO] [stdout] 300 | pub fn handle_control_buttons_mouse(state: &mut State, sink: &mut Sink) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SwitchToTrack` is never constructed
[INFO] [stdout]   --> src/input/commands/track_control.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum TrackAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] 13 |     SwitchToTrack(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrackAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `process_sample` and `name` are never used
[INFO] [stdout]   --> src/effects/mod.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait AudioEffect: Send + Sync {
[INFO] [stdout]    |           ----------- methods in this trait
[INFO] [stdout] 14 |     /// Process a single audio sample
[INFO] [stdout] 15 |     fn process_sample(&mut self, input: f32) -> f32;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EffectWrapper` is never constructed
[INFO] [stdout]   --> src/effects/mod.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct EffectWrapper<S, E> 
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/effects/mod.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | / impl<S, E> EffectWrapper<S, E>
[INFO] [stdout] 35 | | where
[INFO] [stdout] 36 | |     S: Source<Item = f32>,
[INFO] [stdout] 37 | |     E: AudioEffect,
[INFO] [stdout]    | |___________________- associated function in this implementation
[INFO] [stdout] 38 |   {
[INFO] [stdout] 39 |       pub fn new(source: S, effect: E) -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EffectChain` is never constructed
[INFO] [stdout]   --> src/effects/mod.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct EffectChain {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_effect`, `process_sample`, and `reset` are never used
[INFO] [stdout]    --> src/effects/mod.rs:84:12
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl EffectChain {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  84 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn add_effect(&mut self, effect: Box<dyn AudioEffect>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn process_sample(&mut self, mut input: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/effects/delay.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct DelayEffect {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  8 |     delay_samples: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]  9 |     feedback: f32,    // Amount of delayed signal fed back (0.0 - 0.99)
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 10 |     mix: f32,         // Dry/wet mix (0.0 = dry only, 1.0 = wet only)
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 11 |     sample_rate: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 12 |     // Multiple delay taps for richer sound
[INFO] [stdout] 13 |     tap1_samples: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 14 |     tap2_samples: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     damping_coefficient: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DelayEffect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_delay_time`, `set_feedback`, `set_mix`, and `read_tap` are never used
[INFO] [stdout]   --> src/effects/delay.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl DelayEffect {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_delay_time(&mut self, delay_time_ms: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn set_feedback(&mut self, feedback: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn set_mix(&mut self, mix: f32) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn read_tap(&self, tap_samples: usize) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `comb_feedback`, `allpass_feedback`, `room_size`, `damping`, and `mix` are never read
[INFO] [stdout]   --> src/effects/reverb.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct ReverbEffect {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  9 |     comb_feedback: Vec<f32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     allpass_feedback: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     room_size: f32,   // 0.0 - 1.0
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 18 |     damping: f32,     // 0.0 - 1.0
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 19 |     mix: f32,         // 0.0 - 1.0
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ReverbEffect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `process_comb_filters`, `process_allpass_filters`, `set_room_size`, `set_damping`, and `set_mix` are never used
[INFO] [stdout]    --> src/effects/reverb.rs:73:8
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl ReverbEffect {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  73 |     fn process_comb_filters(&mut self, input: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn process_allpass_filters(&mut self, mut input: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn set_room_size(&mut self, room_size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn set_damping(&mut self, damping: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn set_mix(&mut self, mix: f32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/effects/flanger.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct FlangerEffect {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     lfo_rate: f32,        // LFO frequency in Hz
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     delay_base: f32,      // Base delay time in samples
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 16 |     delay_range: f32,     // Modulation range in samples
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 17 |     depth: f32,           // Effect depth (0.0 - 1.0)
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 18 |     feedback: f32,        // Feedback amount (0.0 - 0.99)
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 19 |     mix: f32,             // Dry/wet mix (0.0 - 1.0)
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 20 |     
[INFO] [stdout] 21 |     sample_rate: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FlangerEffect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `lerp`, `get_delayed_sample`, `set_lfo_rate`, `set_depth`, `set_feedback`, and `set_mix` are never used
[INFO] [stdout]    --> src/effects/flanger.rs:56:8
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl FlangerEffect {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  56 |     fn lerp(&self, a: f32, b: f32, t: f32) -> f32 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     fn get_delayed_sample(&self, delay_samples: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn set_lfo_rate(&mut self, rate: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn set_depth(&mut self, depth: f32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_feedback(&mut self, feedback: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn set_mix(&mut self, mix: f32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sample_rate` is never read
[INFO] [stdout]   --> src/audio/mixer.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct MultiTrackMixer {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 15 |     sample_rate: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `play_multi_track_sequence`, `play_track_at_time`, and `apply_master_effects` are never used
[INFO] [stdout]    --> src/audio/mixer.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl MultiTrackMixer {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn play_multi_track_sequence(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     fn play_track_at_time(&self, track: &Track, sink: &mut Sink, playback_time: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn apply_master_effects(&self, _master_track: &MasterTrack, sample: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_pan` is never used
[INFO] [stdout]    --> src/audio/mixer.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn apply_pan(sample: f32, pan: f32) -> (f32, f32) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DURATION` is never used
[INFO] [stdout]   --> src/waveforms/mod.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const DURATION: f32 = 0.19;
[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 `release` is never used
[INFO] [stdout]   --> src/waveforms/adsr_envelope.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | / impl<S> ADSREnvelope<S>
[INFO] [stdout] 21 | | where
[INFO] [stdout] 22 | |     S: Source<Item = f32>,
[INFO] [stdout]    | |__________________________- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 46 |       pub fn release(&mut self) {
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/state/mod.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MasterTrack {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 63 |     pub volume: f32,        // Master volume 0.0 - 1.0
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 64 |     pub delay_enabled: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 65 |     pub reverb_enabled: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub flanger_enabled: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub delay_effect: DelayEffect,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 68 |     pub reverb_effect: ReverbEffect,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 69 |     pub flanger_effect: FlangerEffect,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MasterTrack` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `note`, `octave`, `x`, and `y` are never read
[INFO] [stdout]    --> src/state/mod.rs:97:9
[INFO] [stdout]     |
[INFO] [stdout]  96 | pub struct VisualNote {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout]  97 |     pub note: Note,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]  98 |     pub octave: i32,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub x: f32,
[INFO] [stdout]     |         ^
[INFO] [stdout] 102 |     pub y: f32,
[INFO] [stdout]     |         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VisualNote` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `master_track`, `filter_factor`, `lpf_active`, `delay_effect`, `reverb_effect`, and `flanger_effect` are never read
[INFO] [stdout]    --> src/state/mod.rs:145:9
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub struct State {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub master_track: MasterTrack,   // Master mix bus
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub(crate) filter_factor: f32,
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 154 |     pub(crate) lpf_active: usize,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub delay_effect: DelayEffect,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 184 |     pub reverb_effect: ReverbEffect,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 185 |     pub flanger_effect: FlangerEffect,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/state/mod.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl State {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn apply_lpf(&mut self, sample: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn increase_octave(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn decrease_octave(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn toggle_lpf(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn increase_filter_cutoff(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn decrease_filter_cutoff(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub fn get_current_octave(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     pub fn toggle_waveform(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn increase_attack(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn decrease_attack(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn increase_decay(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn decrease_decay(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn increase_sustain(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn decrease_sustain(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn increase_release(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decrease_release(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub fn attack_normalized(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn decay_normalized(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn sustain_normalized(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 360 |     pub fn start_recording(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn start_playback(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 399 |     pub fn add_visual_note(&mut self, note: Note, octave: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn calculate_adsr_amplitude(&self, time_since_start: f32, is_key_pressed: bool, time_since_release: Option<f32>) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 488 |     pub fn current_track_mut(&mut self) -> &mut Track {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     pub fn toggle_current_track_playback(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EffectsProcessor` is never constructed
[INFO] [stdout]   --> src/state/utils.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct EffectsProcessor<S: Source<Item = f32>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/state/utils.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl<S: Source<Item = f32>> EffectsProcessor<S> {
[INFO] [stdout]    | ----------------------------------------------- associated function in this implementation
[INFO] [stdout] 32 |     fn new(source: S, state: &State) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `numbers`, `knob`, `display_sine`, `display_square`, `bulb`, and `adsr_fader` are never read
[INFO] [stdout]   --> src/graphics/sprites.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Sprites {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 16 |     pub notes: Vec<Sprite>,
[INFO] [stdout] 17 |     pub numbers: Vec<Sprite>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub knob: Vec<Sprite>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 21 |     pub rack: Vec<Sprite>,
[INFO] [stdout] 22 |     pub display_sine: Vec<Sprite>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub display_square: Vec<Sprite>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub octave_fader: Vec<Sprite>,
[INFO] [stdout] 25 |     pub bulb: Vec<Sprite>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 26 |     pub adsr_fader: Vec<Sprite>, // ADSR fader sprites (10 positions for fine control)
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_display_sprite` is never used
[INFO] [stdout]   --> src/graphics/draw.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn draw_display_sprite(sprite: &Vec<Sprite>, buffer: &mut [u32], display_index: usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_bulb_sprite` is never used
[INFO] [stdout]   --> src/graphics/draw.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn draw_bulb_sprite(state: &State, sprites: &Sprites, window_buffer: &mut Vec<u32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_filter_cutoff_knob_sprite` is never used
[INFO] [stdout]   --> src/graphics/draw.rs:92:8
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub fn draw_filter_cutoff_knob_sprite(state: &State, sprites: &Sprites, window_buffer: &mut Vec<u32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_idle_knob_sprite` is never used
[INFO] [stdout]    --> src/graphics/draw.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn draw_idle_knob_sprite(sprites: &Sprites, window_buffer: &mut Vec<u32>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_number_value` is never used
[INFO] [stdout]    --> src/graphics/draw.rs:263:4
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn draw_number_value(x: usize, y: usize, value: u8, sprites: &Sprites, buffer: &mut Vec<u32>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_control_buttons` is never used
[INFO] [stdout]    --> src/graphics/draw.rs:284:8
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub fn draw_control_buttons(state: &State, buffer: &mut Vec<u32>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_button` is never used
[INFO] [stdout]    --> src/graphics/draw.rs:332:4
[INFO] [stdout]     |
[INFO] [stdout] 332 | fn draw_button(x: usize, y: usize, width: usize, height: usize, color: u32, text: &str, buffer: &mut Vec<u32>) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_simple_text` is never used
[INFO] [stdout]    --> src/graphics/draw.rs:358:4
[INFO] [stdout]     |
[INFO] [stdout] 358 | fn draw_simple_text(x: usize, y: usize, text: &str, color: u32, buffer: &mut Vec<u32>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_control_buttons_mouse` is never used
[INFO] [stdout]    --> src/input/commands/mouse_input.rs:300:8
[INFO] [stdout]     |
[INFO] [stdout] 300 | pub fn handle_control_buttons_mouse(state: &mut State, sink: &mut Sink) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SwitchToTrack` is never constructed
[INFO] [stdout]   --> src/input/commands/track_control.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum TrackAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] 13 |     SwitchToTrack(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrackAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `process_sample` and `name` are never used
[INFO] [stdout]   --> src/effects/mod.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait AudioEffect: Send + Sync {
[INFO] [stdout]    |           ----------- methods in this trait
[INFO] [stdout] 14 |     /// Process a single audio sample
[INFO] [stdout] 15 |     fn process_sample(&mut self, input: f32) -> f32;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EffectWrapper` is never constructed
[INFO] [stdout]   --> src/effects/mod.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct EffectWrapper<S, E> 
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/effects/mod.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | / impl<S, E> EffectWrapper<S, E>
[INFO] [stdout] 35 | | where
[INFO] [stdout] 36 | |     S: Source<Item = f32>,
[INFO] [stdout] 37 | |     E: AudioEffect,
[INFO] [stdout]    | |___________________- associated function in this implementation
[INFO] [stdout] 38 |   {
[INFO] [stdout] 39 |       pub fn new(source: S, effect: E) -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EffectChain` is never constructed
[INFO] [stdout]   --> src/effects/mod.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct EffectChain {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_effect`, `process_sample`, and `reset` are never used
[INFO] [stdout]    --> src/effects/mod.rs:84:12
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl EffectChain {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  84 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn add_effect(&mut self, effect: Box<dyn AudioEffect>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn process_sample(&mut self, mut input: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/effects/delay.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct DelayEffect {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  8 |     delay_samples: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]  9 |     feedback: f32,    // Amount of delayed signal fed back (0.0 - 0.99)
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 10 |     mix: f32,         // Dry/wet mix (0.0 = dry only, 1.0 = wet only)
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 11 |     sample_rate: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 12 |     // Multiple delay taps for richer sound
[INFO] [stdout] 13 |     tap1_samples: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 14 |     tap2_samples: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     damping_coefficient: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DelayEffect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_delay_time`, `set_feedback`, `set_mix`, and `read_tap` are never used
[INFO] [stdout]   --> src/effects/delay.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl DelayEffect {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_delay_time(&mut self, delay_time_ms: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn set_feedback(&mut self, feedback: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn set_mix(&mut self, mix: f32) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn read_tap(&self, tap_samples: usize) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `comb_feedback`, `allpass_feedback`, `room_size`, `damping`, and `mix` are never read
[INFO] [stdout]   --> src/effects/reverb.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct ReverbEffect {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  9 |     comb_feedback: Vec<f32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     allpass_feedback: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     room_size: f32,   // 0.0 - 1.0
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 18 |     damping: f32,     // 0.0 - 1.0
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 19 |     mix: f32,         // 0.0 - 1.0
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ReverbEffect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `process_comb_filters`, `process_allpass_filters`, `set_room_size`, `set_damping`, and `set_mix` are never used
[INFO] [stdout]    --> src/effects/reverb.rs:73:8
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl ReverbEffect {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  73 |     fn process_comb_filters(&mut self, input: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn process_allpass_filters(&mut self, mut input: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn set_room_size(&mut self, room_size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn set_damping(&mut self, damping: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn set_mix(&mut self, mix: f32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/effects/flanger.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct FlangerEffect {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     lfo_rate: f32,        // LFO frequency in Hz
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     delay_base: f32,      // Base delay time in samples
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 16 |     delay_range: f32,     // Modulation range in samples
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 17 |     depth: f32,           // Effect depth (0.0 - 1.0)
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 18 |     feedback: f32,        // Feedback amount (0.0 - 0.99)
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 19 |     mix: f32,             // Dry/wet mix (0.0 - 1.0)
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 20 |     
[INFO] [stdout] 21 |     sample_rate: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FlangerEffect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `lerp`, `get_delayed_sample`, `set_lfo_rate`, `set_depth`, `set_feedback`, and `set_mix` are never used
[INFO] [stdout]    --> src/effects/flanger.rs:56:8
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl FlangerEffect {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  56 |     fn lerp(&self, a: f32, b: f32, t: f32) -> f32 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     fn get_delayed_sample(&self, delay_samples: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn set_lfo_rate(&mut self, rate: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn set_depth(&mut self, depth: f32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_feedback(&mut self, feedback: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn set_mix(&mut self, mix: f32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sample_rate` is never read
[INFO] [stdout]   --> src/audio/mixer.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct MultiTrackMixer {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 15 |     sample_rate: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `play_multi_track_sequence`, `play_track_at_time`, and `apply_master_effects` are never used
[INFO] [stdout]    --> src/audio/mixer.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl MultiTrackMixer {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn play_multi_track_sequence(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     fn play_track_at_time(&self, track: &Track, sink: &mut Sink, playback_time: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn apply_master_effects(&self, _master_track: &MasterTrack, sample: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_pan` is never used
[INFO] [stdout]    --> src/audio/mixer.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn apply_pan(sample: f32, pan: f32) -> (f32, f32) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.60s
[INFO] running `Command { std: "docker" "inspect" "9b2235edeead43cdeebb898519edf282f8804babb82d40ef27d249da7277f792", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9b2235edeead43cdeebb898519edf282f8804babb82d40ef27d249da7277f792", kill_on_drop: false }`
[INFO] [stdout] 9b2235edeead43cdeebb898519edf282f8804babb82d40ef27d249da7277f792
