-
Notifications
You must be signed in to change notification settings - Fork 64
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
Should Interpolator support f32? #119
Comments
Thanks for the issue @mitchhentges and thanks so much for the kind words! From memory, the primary reason for using |
Also chiming in to suggest an f32 option. While on most platforms performance of f32 and f64 math is similar (or even f64 being faster), it is also the case that there exists platforms where f64 math is considerably more expensive (often because of small cache sizes or size of SIMD registers). Therefore it would be preferable to let the user pick f32 vs f64 depending on the particular use-case, even if there are audible artefacts with 32bit precision. |
There is also incentive around making it generic over float type such that you can also go for fastfloat type that implements fast-math float operations (as often done in C/C++ for dsp code). |
Some other audio-related packages that I'm using for my application both only support up to
f32
(C'sfloat
) when handling data:opus
, seeopus_encode_float
rnnoise
Details
On Windows, my pipeline looks like:
F32
, convert tof32
here48_000
as required byopus
andrnnoise
f32
->f64
as required bysample::Interpolator
.f32
once donernnoise
opus
This package has been invaluable to me - seeing in easy-to-understand rust an implementation of combining signals, interpolating sample rates and representing how formats look under-the-hood has been awesome! Thanks for your hard work 🎉
The text was updated successfully, but these errors were encountered: