Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Certain songs with certain filter curve values causes SIDPlayFp to crash with segfault #36

Closed
TCH68k opened this issue Jun 5, 2024 · 2 comments
Assignees
Labels
bug Something isn't working

Comments

@TCH68k
Copy link

TCH68k commented Jun 5, 2024

/usr/bin/sidplayfp -vf -mn -fs -p16 -rr -f48000 -o2 -b0:0 -t0 --digiboost --fcurve=256 "/a/WORKDISK/MUSICS/C64Music/MUSICIANS/O/Ouwehand_Reyn/Last_Ninja_Remix.sid" -v15

This song also dies with 65536, 65537, 800, 200000 and 257, with the latter one interestingly not instantly, but delayedly causing the segfault.

I guess these values are "invalid" anyway, but while the manual states that the valid range is from 0.0 to 1.0 the player.cpp contains a wired in filter curve list (https://github.com/libsidplayfp/sidplayfp/blob/master/src/player.cpp#L184) which contains values above 1.0, and the sound really differs between for instance 1.0 and 1.5.

What is the real interval?

@TCH68k TCH68k changed the title Certain songs with certain filter curve value causes SIDPlayFp to crash with segfault Certain songs with certain filter curve values causes SIDPlayFp to crash with segfault Jun 5, 2024
@drfiemost drfiemost self-assigned this Jun 5, 2024
@drfiemost drfiemost added the bug Something isn't working label Jun 5, 2024
@drfiemost
Copy link
Member

I guess these values are "invalid" anyway, but while the manual states that the valid range is from 0.0 to 1.0 the player.cpp contains a wired in filter curve list (https://github.com/libsidplayfp/sidplayfp/blob/master/src/player.cpp#L184) which contains values above 1.0, and the sound really differs between for instance 1.0 and 1.5.

The values in that list are transformed to fit into the correct range:

return (adjustment * 20. - 1.) / 39.;

The range is 0.0 - 1.0 as stated, what is really missing is a santity check for the fcurve parameter.

@TCH68k
Copy link
Author

TCH68k commented Jun 5, 2024

I see. Thank you for clarifying.

BTW, i know that the range is specified in the manual, but i think the program also should print it out in it's help text. Currently it only states

 --fcurve=<num>|auto Controls the filter curve in the ReSIDfp emulation

and it should be

 --fcurve=<num>|auto Controls the filter curve in the ReSIDfp emulation (0.0 to 1.0, default: 0.5)

or something like that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants