Skip to content

sampler bug? #13

Open
Open

Description

@sbechet

Hello,

To begin, thank you very much for your work! It's a very nice peace of rust code.

I played and wrote some code here using resid-rs.

It seems i found a sampler bug when playing soundfx number : 13, 14 and 16 (all others working):

thread 'main' panicked at 'attempt to subtract with overflow', /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/resid-rs-1.1.1/src/envelope.rs:313:25
stack backtrace:
   0: rust_begin_unwind
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/panicking.rs:142:14
   2: core::panicking::panic
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/panicking.rs:48:5
   3: resid::envelope::EnvelopeGenerator::clock_delta
             at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/resid-rs-1.1.1/src/envelope.rs:313:25
   4: resid::synth::Synth::clock_delta
             at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/resid-rs-1.1.1/src/synth.rs:95:13
   5: resid::sampler::Sampler::clock_fast
             at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/resid-rs-1.1.1/src/sampler.rs:150:13
   6: resid::sampler::Sampler::clock
             at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/resid-rs-1.1.1/src/sampler.rs:126:37
   7: resid::sid::Sid::sample
             at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/resid-rs-1.1.1/src/sid.rs:160:9
   8: robrs::rhplayer::RhPlayer::sample
             at ./src/rhplayer.rs:617:5
   9: robrs::main
             at ./src/main.rs:61:41
  10: core::ops::function::FnOnce::call_once
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Can you help? Thank you.

Activity

  1. sbechet commented on Oct 14, 2022

    @sbechet
    Author

    Ok, I have extracted SID registers:
    voice: (u16, u16, u8, u8, u8) = (freq, pw, cr,ad,sr)
    [ voice1, voice2, voice3 ]

    just after i call sample() fn.

    =>

    debuging resid-rs: Some(
    [
    (32896, 32896, 128, 128, 128),
    (32896, 32896, 128, 128, 128),
    (32896, 32896, 128, 128, 128)]
    )
    thread 'main' panicked at 'attempt to subtract with overflow', /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/resid-rs-1.1.1/src/envelope.rs:313:25
    note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

  2. sbechet commented on Oct 14, 2022

    @sbechet
    Author

    Can self.envelope_counter be lesser than 0?

                        State::Release => {
                            // The envelope counter can flip from 0x00 to 0xff by changing state to
                            // attack, then to release. The envelope counter will then continue
                            // counting down in the release state.
                            // This has been verified by sampling ENV3.
                            // NB! The operation below requires two's complement integer.
                            self.envelope_counter -= 1;
                        }
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions