Commit graph

2014 commits

Author SHA1 Message Date
Roderick van Domburg
bb3dd64c87
Implement dithering (#694)
Dithering lowers digital-to-analog conversion ("requantization") error, linearizing output, lowering distortion and replacing it with a constant, fixed noise level, which is more pleasant to the ear than the distortion.

Guidance:

- On S24, S24_3 and S24, the default is to use triangular dithering. Depending on personal preference you may use Gaussian dithering instead; it's not as good objectively, but it may be preferred subjectively if you are looking for a more "analog" sound akin to tape hiss.

- Advanced users who know that they have a DAC without noise shaping have a third option: high-passed dithering, which is like triangular dithering except that it moves dithering noise up in frequency where it is less audible. Note: 99% of DACs are of delta-sigma design with noise shaping, so unless you have a multibit / R2R DAC, or otherwise know what you are doing, this is not for you.

- Don't dither or shape noise on S32 or F32. On F32 it's not supported anyway (there are no integer conversions and so no rounding errors) and on S32 the noise level is so far down that it is simply inaudible even after volume normalisation and control.

New command line option:

--dither DITHER Specify the dither algorithm to use - [none, gpdf,
                tpdf, tpdf_hp]. Defaults to 'tpdf' for formats S16
                S24, S24_3 and 'none' for other formats.

Notes:

This PR also features some opportunistic improvements. Worthy of mention are:
- matching reference Vorbis sample conversion techniques for lower noise
- a cleanup of the convert API
2021-05-26 21:19:17 +02:00
Johannesd3
db71f6d87e
Fix changelog 2021-05-26 21:03:06 +02:00
Roderick van Domburg
7f113b37c3
Merge pull request #685 from roderickvd/log-volume-ctrl-optimisations
Optimize volume control logic
2021-05-26 20:51:27 +02:00
Roderick van Domburg
3a2455d686
Merge branch 'dev' into log-volume-ctrl-optimisations 2021-05-26 20:50:42 +02:00
Roderick van Domburg
d8ec98015c
Merge pull request #673 from Johannesd3/discovery-crate
Create separate discovery crate
2021-05-26 20:21:43 +02:00
johannesd3
1ade02b7ad
Add basic websocket support 2021-05-26 16:51:13 +02:00
Roderick van Domburg
08ba3ad7d7
Merge pull request #758 from roderickvd/bump-rodio-and-jack-crates
Bump jack and Rodio crates
2021-05-25 23:01:33 +02:00
Roderick van Domburg
a590b778de
Bump jack and Rodio crates 2021-05-25 22:35:35 +02:00
Roderick van Domburg
9efd886e91
Describe new mixer-card getopts behavior
Also remove some other getopts and string changes to a separate PR.
2021-05-25 20:48:20 +02:00
Johannesd3
28dd842e05 Fix bug in MercurySender 2021-05-24 16:31:34 +02:00
Roderick van Domburg
eca505c387
Improve volume controls
This is a squashed commit featuring the following:

Connect:
- Synchronize player volume with mixer volume on playback
- Fix step size on volume up/down events
- Remove no-op mixer started/stopped logic

Playback:
- Move from `connect` to `playback` crate
- Make cubic volume control available to all mixers with `--volume-ctrl cubic`
- Normalize volumes to `[0.0..1.0]` instead of `[0..65535]` for greater precision and performance (breaking)
- Add `--volume-range` option to set dB range and control `log` and `cubic` volume control curves
- Fix `log` and `cubic` volume controls to be mute at zero volume

Alsa mixer:
- Complete rewrite (breaking)
- Query card dB range for the `log` volume control unless specified otherwise
- Query dB range from Alsa softvol (previously only from hardware)
- Use `--device` name for `--mixer-card` unless specified otherwise
- Fix consistency for `cubic` between cards that report minimum volume as mute, and cards that report some dB value
- Fix `--volume-ctrl {linear|log}` to work as expected
- Removed `--mixer-linear-volume` option; use `--volume-ctrl linear` instead
2021-05-24 15:53:32 +02:00
Johannesd3
4448ce0c09
Set correct libraryVersion 2021-05-24 11:54:01 +02:00
johannesd3
ceab363429
Update changelog 2021-05-19 21:11:01 +02:00
johannesd3
9b6ba49026
Add "discovery" compat layer to "connect" 2021-05-19 21:09:38 +02:00
johannesd3
c49e1320d4
Update workflow 2021-05-19 21:09:38 +02:00
johannesd3
16de6a7f68
Improve api of discovery crate's builder 2021-05-19 21:05:20 +02:00
johannesd3
a7f9e0a20b
Add an error type to librespot_discovery 2021-05-19 21:05:20 +02:00
johannesd3
1ec5dd21fa
Add discovery example 2021-05-19 21:05:20 +02:00
Johannesd3
ebea5397b9
Add librespot-discovery crate 2021-05-19 21:05:19 +02:00
johannesd3
68818758a2
Add timeout to test 2021-05-18 15:17:30 +02:00
Sasha Hilton
79f75b9119
Merge pull request #749 from roderickvd/fix-default-threshold 2021-05-18 04:40:46 +01:00
Roderick van Domburg
9b44fd4f4a
Skip processing when normalisation is disabled 2021-05-17 21:27:34 +02:00
Roderick van Domburg
a4ad6d4aa8
Fix default normalisation threshold [#745] 2021-05-16 22:30:35 +02:00
johannesd3
041f084d7f Fix warnings 2021-05-13 22:42:55 +02:00
dependabot[bot]
3134e1a0c5 Bump sha-1 from 0.9.5 to 0.9.6
Bumps [sha-1](https://github.com/RustCrypto/hashes) from 0.9.5 to 0.9.6.
- [Release notes](https://github.com/RustCrypto/hashes/releases)
- [Commits](https://github.com/RustCrypto/hashes/compare/sha-1-v0.9.5...sha-1-v0.9.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-12 17:12:11 +02:00
dependabot[bot]
48c5a82071 Bump futures-executor from 0.3.14 to 0.3.15
Bumps [futures-executor](https://github.com/rust-lang/futures-rs) from 0.3.14 to 0.3.15.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.14...0.3.15)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-12 17:11:36 +02:00
Sasha Hilton
6f7b49e7d2
Merge pull request #739 from librespot-org/Johannesd3-remove-dependabot
Remove dependabot
2021-05-12 16:09:18 +01:00
Johannesd3
ecfe5a0cf1
Remove dependabot 2021-05-12 16:38:51 +02:00
Sasha Hilton
b7685e3ac2
Merge pull request #692 from Johannesd3/move-decoder-to-playback
Move decoder to playback crate
2021-05-12 00:30:02 +01:00
johannesd3
555274b5af
Move decoder to playback crate 2021-05-11 20:36:53 +02:00
dependabot[bot]
255f0c6ccf Bump js-sys from 0.3.50 to 0.3.51
Bumps [js-sys](https://github.com/rustwasm/wasm-bindgen) from 0.3.50 to 0.3.51.
- [Release notes](https://github.com/rustwasm/wasm-bindgen/releases)
- [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/wasm-bindgen/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 13:43:09 +02:00
dependabot[bot]
b7d1199068 Bump wasm-bindgen from 0.2.73 to 0.2.74
Bumps [wasm-bindgen](https://github.com/rustwasm/wasm-bindgen) from 0.2.73 to 0.2.74.
- [Release notes](https://github.com/rustwasm/wasm-bindgen/releases)
- [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/wasm-bindgen/compare/0.2.73...0.2.74)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 13:42:36 +02:00
Johannesd3
e74054f2e2 Fix dependabot 2021-05-11 13:39:25 +02:00
Johannesd3
e5e1f006c9 Add indirect dependencies to dependabot 2021-05-11 13:35:10 +02:00
dependabot[bot]
fce91f4e61
Bump jack from 0.6.6 to 0.7.0 (#720) 2021-05-09 21:03:25 +00:00
dependabot[bot]
539e9669a4
Merge pull request #717 from librespot-org/dependabot/cargo/url-2.2.2 2021-05-09 08:11:10 +00:00
johannesd3
85aa4eed89
Bump url and update Cargo.lock 2021-05-09 09:53:20 +02:00
dependabot[bot]
91a60ccac7
Bump sha-1 from 0.9.4 to 0.9.5 (#725) 2021-05-08 22:46:35 +00:00
johannesd3
92e0a28e55
Fix workflow 2021-05-08 22:55:03 +02:00
johannesd3
1c62af9160
Unpin protobuf version 2021-05-08 22:09:37 +02:00
johannesd3
e7b3050a90
Add changelog 2021-05-08 22:04:02 +02:00
Johannesd3
4c875c0e59
Create dependabot.yml 2021-05-08 22:00:07 +02:00
Sasha Hilton
59683d7965 Update Cargo.lock 2021-05-04 13:27:57 +01:00
Sasha Hilton
3cd5ef32c4 Merge branch 'dev' 2021-05-04 13:16:39 +01:00
Sasha Hilton
7570241d86 Change wildcard env_logger dependency to version 0.8 2021-05-04 13:16:16 +01:00
Sasha Hilton
2ef3928691 Update version numbers to 0.2.0 2021-05-04 13:05:13 +01:00
Sasha Hilton
cb6ffef4ff
Merge pull request #710 from Johannesd3/dependencies
Tweak dependencies
2021-05-04 12:13:35 +01:00
johannesd3
f6a328c6ec
Bump getopts 2021-05-01 16:17:05 +02:00
johannesd3
17b04c4b6e
Remove libc dep 2021-05-01 13:00:30 +02:00
johannesd3
da2cd8c971
Bump MSRV to 1.48
hyper, libmdns and sdl require a higher version.
2021-05-01 13:00:29 +02:00