Spotifyd / spotifyd

A spotify daemon
https://spotifyd.rs
GNU General Public License v3.0
9.88k stars 453 forks source link

Sample rate set to 48khz when using the alsa backend #1216

Open Ryp opened 1 year ago

Ryp commented 1 year ago

To Reproduce Use alsa as the audio backend. Play a song. Run this command and replace cardX with the correct device

cat /proc/asound/cardX/pcm0p/sub0/hw_params

On my machine it shows 48khz. My DAC has a display and states the same. My DAC can play 44.1khz as well

Expected behavior Music should play at 44.1khz (or some multiple) because that's most likely the source audio format. 48khz is for videos, and using it for music add a useless resampling step (purists would consider this heresy, even though it still sounds good).

Logs

Click to show logs ``` CliConfig { config_path: None, no_daemon: true, verbose: true, pid: None, shared_config: SharedConfigValues { username: Some("taken out for privacy"), username_cmd: None, password: Some("taken out for privacy"), password_cmd: None, use_keyring: false, use_mpris: Some(true), dbus_type: None, on_song_change_hook: None, cache_path: None, no-audio-cache: true, backend: Some(Alsa), volume_controller: None, device: Some("default:CARD=NOPE"), control: None, mixer: None, device_name: Some("no"), bitrate: Some(Bitrate320), audio_format: Some(S24), initial_volume: None, volume_normalisation: true, normalisation_pregain: None, zeroconf_port: None, proxy: None, device_type: Some(Avr), autoplay: false, max_cache_size: None } } Found user shell: Some("/bin/bash") No proxy specified registering event source with poller: token=Token(2147483649), interests=READABLE Using software volume controller. registering event source with poller: token=Token(0), interests=READABLE | WRITABLE signal: Want signal found waiting giver, notifying poll_want: taker wants! signal: Want signal: Want deregistering event source from poller signal: Closed Ignoring blacklisted access point ap-gew4.spotify.com:4070 Ignoring blacklisted access point ap-gue1.spotify.com:443 Connecting to AP "ap-gew1.spotify.com:443" registering event source with poller: token=Token(16777216), interests=READABLE | WRITABLE new Session[0] Mixing with softvol and volume control: Log(60.0) Normalisation Type: Auto Normalisation Pregain: 0.0 dB Normalisation Threshold: -2.0 dBFS Normalisation Method: Dynamic Session[0] strong=3 weak=1 Country: "FR" Normalisation Attack: 5 ms Normalisation Release: 100 ms Normalisation Knee: 5 dB new Spirc[0] new MercuryManager Input volume 58958 mapped to: 49.99% new Player[0] Converting with ditherer: tpdf Using AlsaSink with format: S24 command=AddEventSender command=VolumeSet(58958) registering event source with poller: token=Token(1), interests=READABLE kMessageTypeNotify "Web Player (Firefox)" 28f3e936584cd981c2c3147e97808edcee5fa1d8 253424170 1692470538006 kPlayStatusStop State: context_uri: "spotify:playlist:78sNyQed5gKSrFElk9DjgX" index: 0 position_ms: 0 status: kPlayStatusPlay position_measured_at: 1692470545149 context_description: "" shuffle: true repeat: false playing_from_fallback: true row: 0 playing_track_index: 0 track {gid: ">\341;\025B\027E5\275\211Q\266\276\374\r\322"} track {gid: "\272\327\007dX\262B\332\243\202\030\345{\263\371\036"} track {gid: "\312\263\245zs\353JI\2457\356\333\277\327\324s"} track {gid: "\3551\\O^=HD\266\372?A\331 \216\375"} track {gid: "7\225\352\205\021\006DB\277\304d\2479Q\331\246"} track {gid: "-\302\000\177>lB^\223DnDk\222\301~"} track {gid: "\221\2304\314\3202M\302\261\276\347\327U\357\237\332"} track {gid: "ih\201J\005\324@\326\246\212\022\354(\222\211N"} track {gid: "Q\225\365w\373\003F\277\243L\030\215*p\335."} track {gid: "2v\023\324\275TJ\r\267\372;w\\\223O~"} track {gid: "\221\361#Q\226\252K\244\237\276\234\t\177\274c("} track {gid: "\251>(R\317v\216\271\222\213"} track {gid: "\261\276\375\255u\204CM\203\3071Z\2326\213a"} track {gid: "\333x\333_{\332C\320\234\227\213\345\205\253oN"} track {gid: "\217\331\323\241v\340@\337\214\241\025\021\233\r\220z"} track {gid: "\247\253\356P\255\017D\206\257\231\344\310/\005\344\242"} track {gid: "\313]\374f\255SB\271\237h\266&U5\360\026"} track {gid: "J\302\337\0239\024F\316\236\361B\334\376\024\343\263"} track {gid: "[\363\215/~\303A\352\277\357\023|\306\270\374\202"} track {gid: "[\377q\342o\213C\000\200\000\021\232\206\241\2266"} track {gid: "\354\345\\b\206\202N(\265\256\341\025$\304C`"} track {gid: "+(\267\375\226\347F*\246\023\016\335\244C\367\200"} track {gid: "\033\332s\353*\277N_\2775\372\027\221\255\2430"} track {gid: "\231\000\000\370\243\372J\036\272E\324\024\0068\263\341"} track {gid: "\017\361L\230\231@@\023\243\264?\016\\\000\221J"} track {gid: "\362\213\261(\327DD\335\217\202\272\3312\374\207g"} track {gid: "v\346\206\226\360\323Es\205\244H\303>\235\037~"} track {gid: "_5\221\365\373\306K\224\203\252[?U]\032T"} track {gid: "\324\375u}\351\204O\252\250\206\313\007\334\311j\222"} track {gid: "\310\362\226\373\315\342A|\210_\236M;\236\014\223"} track {gid: "0\2051{\255oD\263\271\334b\356\216\350\260\013"} track {gid: "\003Zm`\355\026L+\221\034M\322\3608\226n"} track {gid: "@m\306\367,\375Nb\231G\256~5[\031c"} track {gid: "V\273\376\325c\032AU\245\331\215\364\036\311S\272"} track {gid: "X\322\023@\364^@\322\223\030\263\303\213\036\316\355"} track {gid: "\277&\225Gs\221K\270\225D\2417\347\2624}"} track {gid: "\2224u(\327\331M\233\206mHYz\216-\306"} track {gid: "a1RR\267\003AC\215z\207\376\323b\344\203"} track {gid: "0\314~\337\335dA\010\256pQ\273\n\362&\342"} track {gid: "\340E7\215x\264M\303\225/ \002C\235K|"} track {gid: "S5\366\304w\274E\031\240\334P\204`\230\\\001"} track {gid: "\200\244\000\211A\302D0\264\\G\266\036\274\330\031"} track {gid: "2\214\242\216\375AIb\266>\252\216-\026\002("} track {gid: "\237C\327\316\334\302Ho\214\363\265@x$ :"} track {gid: "\326\317\237#\274\016M\267\245\336\022\320\037\254\241\025"} track {gid: "\037\223~\346htHR\222\004\230e\257\376\213\r"} track {gid: "sG\016\013\346\264I\261\247\322\3776i\252O\023"} track {gid: "+3\216BU\260M\342\233\200L\010\016\315%\341"} track {gid: "\260\311O/0\230Bu\270h\032\251\030R6\020"} track {gid: "\300\366\006\374\366\250H\355\215d\344&?\273V\226"} track {gid: "\016\035\207\263~\205B`\204\327\201\214\2777\275\356"} track {gid: "J2\270]Z\377N\325\251s\001\232\371\356/\334"} track {gid: "\273\363y|~%M/\204\244\212\025p\024\"\177"} track {gid: "\226\n\034\033\223\224O\231\251\262\311z\353\016\216\321"} track {gid: "\331\316\366\264\020"} track {gid: "\300\337i\001\317^G\241\233\006\213\310\267\306\323&"} track {gid: "\313\316#6\256\242Dz\203\262\275%\261\237\245\237"} track {gid: "\312\205\314\336A\226IG\226\263k\226\317\346\005t"} track {gid: ")\2073\r\034\037A\225\243\331\324q\'\214r0"} track {gid: "\006\361%\016d\273I\357\256\311\034\226\313\314\320\277"} Frame has 64 tracks Sending status to server: [kPlayStatusPlay] command=SetAutoNormaliseAsAlbum(false) command=Load(SpotifyId { id: 83581600878247291361243703872992316882, audio_type: Track }, true, 0) Sending status to server: [kPlayStatusPlay] Downloading file 278af72548d843daba0bcb61c54c689a964f71c0 new ChannelManager new AudioKeyManager Normalisation Data: NormalisationData { track_gain_db: -6.930000305175781, track_peak: 1.0307395458221436, album_gain_db: -5.569999694824219, album_peak: 1.0420470237731934 } Calculated Normalisation Factor for Track: 45.03% == Starting sink == Desired Frames per Buffer: 15052 No Desired Period size in range reported by the device. Buffer size: 15052 Desired Period Frame range: 1505 (Buffer size / 10) - 3763 (Buffer size / 4) Actual Period Frame range as reported by the device: 940 - 941 Failed to set Buffer and/or Period size, falling back to the device's defaults. You may experience higher than normal CPU usage and/or audio issues. Actual Frames per Buffer: 15052 Actual Frames per Period: 940 Period Buffer size in bytes: 7520 Period Buffer capacity: 7520 Sending status to server: [kPlayStatusPlay] ==> kPlayStatusPlay Making request Request(GET https://api.spotify.com/v1/tracks/1UEsd9baZdWTJqDiCM1iCu, [authorization: Bearer BQCJ5paY8r8HCOCoME5J0tsojkIo6D1x8uBc_MER9B8dC28P44bY-X6Vuo3aZrB7qMSJ0HWM-gxrXpwzh-gDk582k6cWvq_NQSqEI9j5uGWl-8kvngHasSbvb6QzP8rekINWua9ZEQDRtsfKiDAx1LOzrfk-GNevNd7B8LCiU_0IW-TW]) connecting to api.spotify.com:443 at 35.186.224.25:443 No cached session for DnsName(DnsName(DnsName("api.spotify.com"))) Not resuming any session Sending ClientHello Message { version: TLSv1_0, payload: Handshake { parsed: HandshakeMessagePayload { typ: ClientHello, payload: ClientHello( ClientHelloPayload { client_version: TLSv1_2, random: 4c0f294d67a831c3125696f1eb7ea697e3d3ca9600770416b86d51c513809665, session_id: 8fcee9e52a0557e2638a6daa43fb87ee46775ef825acab15a86d8c06d1fa34c8, cipher_suites: [ TLS13_AES_256_GCM_SHA384, TLS13_AES_128_GCM_SHA256, TLS13_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_EMPTY_RENEGOTIATION_INFO_SCSV, ], compression_methods: [ Null, ], extensions: [ SupportedVersions( [ TLSv1_3, TLSv1_2, ], ), ECPointFormats( [ Uncompressed, ], ), NamedGroups( [ X25519, secp256r1, secp384r1, ], ), SignatureAlgorithms( [ ECDSA_NISTP384_SHA384, ECDSA_NISTP256_SHA256, ED25519, RSA_PSS_SHA512, RSA_PSS_SHA384, RSA_PSS_SHA256, RSA_PKCS1_SHA512, RSA_PKCS1_SHA384, RSA_PKCS1_SHA256, ], ), ExtendedMasterSecretRequest, CertificateStatusRequest( OCSP( OCSPCertificateStatusRequest { responder_ids: [], extensions: , }, ), ), ServerName( [ ServerName { typ: HostName, payload: HostName( ( 6170692e73706f746966792e636f6d, DnsName( "api.spotify.com", ), ), ), }, ], ), SignedCertificateTimestampRequest, KeyShare( [ KeyShareEntry { group: X25519, payload: f4ad946a23721f2fac1a78b033cf62f2f08f9b5e3e554e7402378e5d82c6e85a, }, ], ), PresharedKeyModes( [ PSK_DHE_KE, ], ), SessionTicket( Request, ), ], }, ), }, encoded: 010000ed03034c0f294d67a831c3125696f1eb7ea697e3d3ca9600770416b86d51c513809665208fcee9e52a0557e2638a6daa43fb87ee46775ef825acab15a86d8c06d1fa34c80014130213011303c02cc02bcca9c030c02fcca800ff01000090002b00050403040303000b00020100000a00080006001d00170018000d001400120503040308070806080508040601050104010017000000050005010000000000000014001200000f6170692e73706f746966792e636f6d00120000003300260024001d0020f4ad946a23721f2fac1a78b033cf62f2f08f9b5e3e554e7402378e5d82c6e85a002d0002010100230000, }, } We got ServerHello ServerHelloPayload { legacy_version: TLSv1_2, random: 685f00b658dcf6d349f3eb6748721a6004f92a957939ee202c7737cee05b6ba0, session_id: 8fcee9e52a0557e2638a6daa43fb87ee46775ef825acab15a86d8c06d1fa34c8, cipher_suite: TLS13_AES_256_GCM_SHA384, compression_method: Null, extensions: [ KeyShare( KeyShareEntry { group: X25519, payload: d5820d36ac25cdf23dfec078bf19e0625cf5d8856630748372219e1c1c7c9f0a, }, ), SupportedVersions( TLSv1_3, ), ], } Using ciphersuite TLS13_AES_256_GCM_SHA384 Not resuming EarlyData rejected Dropping CCS TLS1.3 encrypted extensions: [] ALPN protocol is None Server cert is [Certificate(b"0\x82\x06\xa50\x82\x05\x8d\xa0\x03\x02\x01\x02\x02\x10\x07\xc9\xc2\xcd\x12\x01\xd6\x1c\x1f\x96+\x13\xb4\xe2\x1f\xb90\r\x06\t*\x86H\x86\xf7\r\x01\x01\x0b\x05\00O1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1)0'\x06\x03U\x04\x03\x13 DigiCert TLS RSA SHA256 2020 CA10\x1e\x17\r230307000000Z\x17\r240306235959Z0N1\x0b0\t\x06\x03U\x04\x06\x13\x02SE1\x120\x10\x06\x03U\x04\x07\x13\tStockholm1\x130\x11\x06\x03U\x04\n\x13\nSpotify AB1\x160\x14\x06\x03U\x04\x03\x0c\r*.spotify.com0\x82\x01\"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\0\x03\x82\x01\x0f\00\x82\x01\n\x02\x82\x01\x01\0\xcf\xdd\x01\x86\x7f\xd3\x18\xb20\xd7\xcaQ\xe9X%;o\x18m6\xe9\x84\r\xff\xdfc2\xb8C\x8f\xf3\xb7\xbc\xa2\xa6ma\xb3\xca\x9f\x15Z6\xb7\xd8Ny\xf5\x982\x07\xd4\x06\xbe\xc5\xb8C\xb5\xf6-&\x8cR\xb2\x1a\xb1;u7\x9d\x8d\xe76\x86\xbc\xbdE)\x99\xca\x9b\xe2\xb7\x88)\xa1\xb8c\xd9nr\\\xbd\xbbj\x07\x80\x99\xcbI\x92\xcd\x8eZy>\xd3](\xcd%\xbc\xbe\xfb\x1b\xa4\x17J%#\x1aZ\x17\r\x06S\x98\xdf\xfcg\x03\xbe\xcaP\xb9D\xf4G}v\xc2\x95\x19\"3g\x84\xa4\xa3M\xe6\xd1\x1c\xf5L\x8b\xc1\x9c\xe0~X7\x173\xc9$\xa9E\xc1\x92\x0b\x19\x04\xd7~\x86\xaah\xf4\x8a\x7f\xa7\xa1V@\xc2]\xf7CU\xb9\x13\xd9\xde\xda\xd3\xa2\xb1\x92G\xe24t\xbeX\xe9\xb9\xe5-\x8eyG\xd0|1\rx\xed\xd50\xfd\x95x\x9c\x14\xae\x04\xa6p\x11s\xb3Q\x1a\xb7\xd4\x14\xab\\9\x96\x81\xce<\xd1|\xe4\x1f;\xdeO\xee\xe3\xe6B\xd7\x02\x03\x01\0\x01\xa3\x82\x03|0\x82\x03x0\x1f\x06\x03U\x1d#\x04\x180\x16\x80\x14\xb7k\xa2\xea\xa8\xaa\x84\x8cy\xea\xb4\xda\x0f\x98\xb2\xc5\x95v\xb9\xf40\x1d\x06\x03U\x1d\x0e\x04\x16\x04\x14:\xf6/\x7f\xecO\xb1!\x99~\x89\xc0\x0f\xb2%&%e\xdeF0%\x06\x03U\x1d\x11\x04\x1e0\x1c\x82\r*.spotify.com\x82\x0bspotify.com0\x0e\x06\x03U\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x05\xa00\x1d\x06\x03U\x1d%\x04\x160\x14\x06\x08+\x06\x01\x05\x05\x07\x03\x01\x06\x08+\x06\x01\x05\x05\x07\x03\x020\x81\x8f\x06\x03U\x1d\x1f\x04\x81\x870\x81\x840@\xa0>\xa0<\x86:http://crl3.digicert.com/DigiCertTLSRSASHA2562020CA1-4.crl0@\xa0>\xa0<\x86:http://crl4.digicert.com/DigiCertTLSRSASHA2562020CA1-4.crl0>\x06\x03U\x1d \x0470503\x06\x06g\x81\x0c\x01\x02\x020)0'\x06\x08+\x06\x01\x05\x05\x07\x02\x01\x16\x1bhttp://www.digicert.com/CPS0\x7f\x06\x08+\x06\x01\x05\x05\x07\x01\x01\x04s0q0$\x06\x08+\x06\x01\x05\x05\x070\x01\x86\x18http://ocsp.digicert.com0I\x06\x08+\x06\x01\x05\x05\x070\x02\x86=http://cacerts.digicert.com/DigiCertTLSRSASHA2562020CA1-1.crt0\t\x06\x03U\x1d\x13\x04\x020\00\x82\x01\x80\x06\n+\x06\x01\x04\x01\xd6y\x02\x04\x02\x04\x82\x01p\x04\x82\x01l\x01j\0w\0v\xff\x88?\n\xb6\xfb\x95Q\xc2a\xcc\xf5\x87\xba4\xb4\xa4\xcd\xbb)\xdchB\n\x9f\xe6gLZ:t\0\0\x01\x86\xba\xde\xd5\x07\0\0\x04\x03\0H0F\x02!\0\xbbt\x9fy\xb4?\xaf0`\xb2L\x17\xdbY\xa3\xc3\xdf\nnf`oR\xe2\xc4\xfe\xee\xc4.\x1f\x08E\x02!\0\xe4\xa9f\xde\xf7I\x86\x1e}`A\xb4\x80\xbb\xa8\xab\xf9\xa0Z#\xe6\x1c\xc8W\x15\xdc\xf6\xb8m\xbd\xca\xdf\0w\0s\xd9\x9e\x89\x1bL\x96x\xa0 }G\x9d\xe6\xb2\xc6\x1c\xd0Q^q\x19*\x8ck\x80\x10z\xc1wr\xb5\0\0\x01\x86\xba\xde\xd5%\0\0\x04\x03\0H0F\x02!\0\x85\xfe\xc6Z\xe0\xe3\xd9\xf5\xf1\xb6}\x87<\xf1^\xf0\xfe\xac\xdc~\x1d\xc4\xc7\xbb\r\xe3\x08\xdb+\xed\x85p\x02!\0\xd7\x0b#=+\x80\x0f\x8f\xf3\0u\xbdB\xf68/\xa3\xde\x0caG\xb5(\x89\xf3\x92\xe7\xdc\x8d.\xdf\xc3\0v\0H\xb0\xe3k\xda\xa6G4\x0f\xe5j\x02\xfa\x9d0\xeb\x1cR\x01\xcbV\xdd,\x81\xd9\xbb\xbf\xab9\xd8\x84s\0\0\x01\x86\xba\xde\xd4\xf2\0\0\x04\x03\0G0E\x02 e\xaei\xbb\xb6\xe6\xe7X\xd5\x8f\xc5I\n\\\x03\x87\xd0\xdcg\xcfy&\xe5\xd7\xf1\xef\xe2\xaaua\xf1t\x02!\0\xae\xb4\xa5\x9c\xa1\x12\xd1\xcb\x92\xb5\xb0;{)+3\xd4\xdfo\x8b9\x02\x7f\xb4\x83\xf4\x96\x9b\xf91:\xc1O\x8b\xb6\xddb\x927\xb6\xcf\xdd\xa3\xf2\xc17\xf9=\x0c7\x1d\x9e1\xde\xe6')\x05\xb4\x13\xe3\xb9A\x15tW\xfe\xfe\xd5\x92\x01Q\x126e\x15\xa7\x80\x1eU\xf4e\xdf)\xceG^\xa8\x1d\xe9\xea2\xb7g\xbe%\x83X\xe61\x90\xd8\xdc\x82\xf1\xe4\xf9T\xda\x1d\xe7\xa4\xcd\xe6M}\xa6\xb0\xc4\xe3\xee\xd1\xd6\xa7\xfa\x10_\xf0\xefU\xd2J\n\xe6ZOGp\xb8r4\xa2Ia\xbb\x90@\xe3\xb3\xde\xc0\xb4\x19\x05o%O]\xd2\x06\r\x93\x1d:\xaev\x12S\xb6\xe1te\xdf\xdc\xbb\0\x90\xb5"), Certificate(b"0\x82\x04\xbe0\x82\x03\xa6\xa0\x03\x02\x01\x02\x02\x10\x06\xd8\xd9\x04\xd5XCF\xf6\x8a/\xa7T\"~\xc40\r\x06\t*\x86H\x86\xf7\r\x01\x01\x0b\x05\00a1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1\x190\x17\x06\x03U\x04\x0b\x13\x10www.digicert.com1 0\x1e\x06\x03U\x04\x03\x13\x17DigiCert Global Root CA0\x1e\x17\r210414000000Z\x17\r310413235959Z0O1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1)0'\x06\x03U\x04\x03\x13 DigiCert TLS RSA SHA256 2020 CA10\x82\x01\"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\0\x03\x82\x01\x0f\00\x82\x01\n\x02\x82\x01\x01\0\xc1K\xb3eGp\xbc\xddOX\xdb\xec\x9c\xed\xc3f\xe5\x1f1\x13T\xadJfF\x1f,\n\xecd\x07\xe5.\xdc\xdc\xb9\n \xed\xdf\xe3\xc4\xd0\x9e\x9a\xa9z\x1d\x82\x88\xe5\x11V\xdb\x1e\x9fX\xc2Q\xe7,4\r.\xd2\x92\xe1V\xcb\xf1y_\xb3\xbb\x87\xca%\x03{\x9aRAf\x10`OW\x13I\xf0\xe87g\x83\xdf\xe7\xd3KgL\"Q\xa6\xdf\x0e\x99\x10\xedWQt&\xe2}\xc7\xcab.\x13\x1b\x7f#\x88%So\xc14X\0\x8b\x84\xff\xf8\xbe\xa7XI\"{\x96\xad\xa2\x88\x9b\x15\xbc\xa0|\xdf\xe9Q\xa8\xd5\xb0\xed7\xe26\xb4\x82Kb\xb5I\x9a\xec\xc7g\xd6\xe3>\xf5\xe3\xd6\x12^D\xf1\xbfqB}X\x84\x03\x80\xb1\x81\x01\xfa\xf9\xca2\xbb\xb4\x8e'\x87'\xc5+t\xd4\xa8\xd6\x97\xde\xc3d\xf9\xca\xceS\xa2V\xbcx\x17\x8eI\x03)\xae\xfbIO\xa4\x15\xb9\xce\xf2\\\x19Wmky\xa7+\xa2' \x13\xb5\xd0=@\xd3!0\x07\x93\xea\x99\xf5\x02\x03\x01\0\x01\xa3\x82\x01\x820\x82\x01~0\x12\x06\x03U\x1d\x13\x01\x01\xff\x04\x080\x06\x01\x01\xff\x02\x01\00\x1d\x06\x03U\x1d\x0e\x04\x16\x04\x14\xb7k\xa2\xea\xa8\xaa\x84\x8cy\xea\xb4\xda\x0f\x98\xb2\xc5\x95v\xb9\xf40\x1f\x06\x03U\x1d#\x04\x180\x16\x80\x14\x03\xdeP5V\xd1L\xbbf\xf0\xa3\xe2\x1b\x1b\xc3\x97\xb2=\xd1U0\x0e\x06\x03U\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x860\x1d\x06\x03U\x1d%\x04\x160\x14\x06\x08+\x06\x01\x05\x05\x07\x03\x01\x06\x08+\x06\x01\x05\x05\x07\x03\x020v\x06\x08+\x06\x01\x05\x05\x07\x01\x01\x04j0h0$\x06\x08+\x06\x01\x05\x05\x070\x01\x86\x18http://ocsp.digicert.com0@\x06\x08+\x06\x01\x05\x05\x070\x02\x864http://cacerts.digicert.com/DigiCertGlobalRootCA.crt0B\x06\x03U\x1d\x1f\x04;0907\xa05\xa03\x861http://crl3.digicert.com/DigiCertGlobalRootCA.crl0=\x06\x03U\x1d \x046040\x0b\x06\t`\x86H\x01\x86\xfdl\x02\x010\x07\x06\x05g\x81\x0c\x01\x010\x08\x06\x06g\x81\x0c\x01\x02\x010\x08\x06\x06g\x81\x0c\x01\x02\x020\x08\x06\x06g\x81\x0c\x01\x02\x030\r\x06\t*\x86H\x86\xf7\r\x01\x01\x0b\x05\0\x03\x82\x01\x01\0\x802\xce^\x0b\xddnZ\r\n\xaf\xe1\xd6\x84\xcb\xc0\x8e\xfa\x85p\xed\xda]\xb3\x0c\xf7+u@\xfe\x85\n\xfa\xf31x\xb7pK\x1a\x89X\xba\x80\xbd\xf3k\x1d\xe9~\xcf\x0b\xbaX\x9cY\xd4\x90\xd3\xfdl\xfd\xd0\x98m\xb7q\x82[\xcfm\x0bZ\t\xd0{\xde\xc4C\xd8*\xa4\xde\x9eA&_\xbb\x8f\x99\xcb\xdd\xae\xe1\xa8o\x9f\x87\xfet\xb7\x1f\x1b \xab\xb1O\xc6\xf5g]]\x9b<\xe9\xffi\xf7al\xd6\xd9\xf3\xfd6\xc6\xab\x03\x88v\xd2K.u\x86\xe3\xfc\xd8U}&\xc2\x11w\xdf>\x02\xb6|\xf3\xab{z\x866o\xb8\xf7\xd8\x93q\xcf\x86\xdfs0\xfa{\xab\xed*Y\xc8B\x84;\x11\x17\x1aR\xf3\xc9\x0e\x14}\xa2[rg\xbaq\xedWGf\xc5\xb8\x02Je4^\x8b\xd0*< \x9cQ\x99L\xe7R\x9e\xf7k\x11+\r\x92~\x1d\xe8\x8a\xeb6\x16C\x87\xea*c\xbfu?\xeb\xde\xc4\x03\xbb\n<\xf70\xef\xeb\xafL\xfc\x8b6\x10s>\xf3\xa4")] created stream: Stream(RustlsStream) sending request GET https://api.spotify.com/v1/tracks/1UEsd9baZdWTJqDiCM1iCu writing prelude: GET /v1/tracks/1UEsd9baZdWTJqDiCM1iCu HTTP/1.1 Host: api.spotify.com User-Agent: ureq/2.6.2 Accept: */* authorization: *** Ticket saved Ticket saved Streaming body until content-length: 4519 response 200 to GET https://api.spotify.com/v1/tracks/1UEsd9baZdWTJqDiCM1iCu dropping stream: Stream(RustlsStream) Sending status to server: [kPlayStatusPause] command=Pause == Stopping sink == Sending status to server: [kPlayStatusPause] ==> kPlayStatusPause Making request Request(GET https://api.spotify.com/v1/tracks/1UEsd9baZdWTJqDiCM1iCu, [authorization: Bearer BQCJ5paY8r8HCOCoME5J0tsojkIo6D1x8uBc_MER9B8dC28P44bY-X6Vuo3aZrB7qMSJ0HWM-gxrXpwzh-gDk582k6cWvq_NQSqEI9j5uGWl-8kvngHasSbvb6QzP8rekINWua9ZEQDRtsfKiDAx1LOzrfk-GNevNd7B8LCiU_0IW-TW]) connecting to api.spotify.com:443 at 35.186.224.25:443 Resuming session Sending ClientHello Message { version: TLSv1_0, payload: Handshake { parsed: HandshakeMessagePayload { typ: ClientHello, payload: ClientHello( ClientHelloPayload { client_version: TLSv1_2, random: a50136f08260ff1ba06409e505b018fdd9741abf4417b4d0da9202a6c79fff27, session_id: b7db05fc71e9d7a7a26a9e7ffcd72b6383ea51b5ccc073fc80d4b2e4d5e9ba8b, cipher_suites: [ TLS13_AES_256_GCM_SHA384, TLS13_AES_128_GCM_SHA256, TLS13_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_EMPTY_RENEGOTIATION_INFO_SCSV, ], compression_methods: [ Null, ], extensions: [ SupportedVersions( [ TLSv1_3, TLSv1_2, ], ), ECPointFormats( [ Uncompressed, ], ), NamedGroups( [ X25519, secp256r1, secp384r1, ], ), SignatureAlgorithms( [ ECDSA_NISTP384_SHA384, ECDSA_NISTP256_SHA256, ED25519, RSA_PSS_SHA512, RSA_PSS_SHA384, RSA_PSS_SHA256, RSA_PKCS1_SHA512, RSA_PKCS1_SHA384, RSA_PKCS1_SHA256, ], ), ExtendedMasterSecretRequest, CertificateStatusRequest( OCSP( OCSPCertificateStatusRequest { responder_ids: [], extensions: , }, ), ), ServerName( [ ServerName { typ: HostName, payload: HostName( ( 6170692e73706f746966792e636f6d, DnsName( "api.spotify.com", ), ), ), }, ], ), SignedCertificateTimestampRequest, KeyShare( [ KeyShareEntry { group: X25519, payload: 14d4f4b46180d79b96107b03369c8028b7b98750f8f2118935baac9a1c735b7e, }, ], ), PresharedKeyModes( [ PSK_DHE_KE, ], ), PresharedKey( PresharedKeyOffer { identities: [ PresharedKeyIdentity { identity: 025d7fa774890110cc4c8210e6a6b34174fc83064d759685fa7e222da8d72a1e37dbb697fc459880ad207ea599dc0e45b227befcc3d98341ea90879a649114455e29803b059458201aaf7026a5572b65bb3b78094cbcd26392ad060d3138130e5f729ecd06a95262ac534058822459e8d78a1a98f3e970a144d9cc1e6ebcb801507b670f1201ae32dbb300c67583bd8b3a71ceed89eb1a7a0e2011367a5b3a48c8662597cd313a6304c8cb66a90c7938a9acff5afa19fe6084cbcc166207f1a10c983a2c6137b12a7bc86e159ec1a7c49f1848b34d39982daef682e75b8da0ae18cdcb4950415212fa5d33baed0337, obfuscated_ticket_age: 794337543, }, ], binders: [ f8eb4626fbafa1603ce0805a37c8e0dc893a82c864691f2b0f1a01a212126174a78a879a786af5e1432aa35a3083ab60, ], }, ), ], }, ), }, encoded: 010002170303a50136f08260ff1ba06409e505b018fdd9741abf4417b4d0da9202a6c79fff2720b7db05fc71e9d7a7a26a9e7ffcd72b6383ea51b5ccc073fc80d4b2e4d5e9ba8b0014130213011303c02cc02bcca9c030c02fcca800ff010001ba002b00050403040303000b00020100000a00080006001d00170018000d001400120503040308070806080508040601050104010017000000050005010000000000000014001200000f6170692e73706f746966792e636f6d00120000003300260024001d002014d4f4b46180d79b96107b03369c8028b7b98750f8f2118935baac9a1c735b7e002d000201010029012a00f500ef025d7fa774890110cc4c8210e6a6b34174fc83064d759685fa7e222da8d72a1e37dbb697fc459880ad207ea599dc0e45b227befcc3d98341ea90879a649114455e29803b059458201aaf7026a5572b65bb3b78094cbcd26392ad060d3138130e5f729ecd06a95262ac534058822459e8d78a1a98f3e970a144d9cc1e6ebcb801507b670f1201ae32dbb300c67583bd8b3a71ceed89eb1a7a0e2011367a5b3a48c8662597cd313a6304c8cb66a90c7938a9acff5afa19fe6084cbcc166207f1a10c983a2c6137b12a7bc86e159ec1a7c49f1848b34d39982daef682e75b8da0ae18cdcb4950415212fa5d33baed03372f58a107003130f8eb4626fbafa1603ce0805a37c8e0dc893a82c864691f2b0f1a01a212126174a78a879a786af5e1432aa35a3083ab60, }, } We got ServerHello ServerHelloPayload { legacy_version: TLSv1_2, random: 7a21ef837ab65f3c4da751ccaa3a6a155323a44eac03fcf925d8580462d752e8, session_id: b7db05fc71e9d7a7a26a9e7ffcd72b6383ea51b5ccc073fc80d4b2e4d5e9ba8b, cipher_suite: TLS13_AES_256_GCM_SHA384, compression_method: Null, extensions: [ PresharedKey( 0, ), KeyShare( KeyShareEntry { group: X25519, payload: 26073e1e4eeed9e082f15b3961423de36c94e61ea13de8537f473c43607b1105, }, ), SupportedVersions( TLSv1_3, ), ], } Using ciphersuite TLS13_AES_256_GCM_SHA384 Resuming using PSK Dropping CCS TLS1.3 encrypted extensions: [] ALPN protocol is None created stream: Stream(RustlsStream) sending request GET https://api.spotify.com/v1/tracks/1UEsd9baZdWTJqDiCM1iCu writing prelude: GET /v1/tracks/1UEsd9baZdWTJqDiCM1iCu HTTP/1.1 Host: api.spotify.com User-Agent: ureq/2.6.2 Accept: */* authorization: *** Ticket saved Ticket saved Streaming body until content-length: 4519 response 200 to GET https://api.spotify.com/v1/tracks/1UEsd9baZdWTJqDiCM1iCu dropping stream: Stream(RustlsStream) File 278af72548d843daba0bcb61c54c689a964f71c0 complete ```

Compilation flags

Versions

eladyn commented 1 year ago

Sorry for taking so long to respond. Unfortunately, I'm a bit at loss here. As you can see here, librespot is using a hardcoded 44.1kHz value that it tries to use with the device. So there is probably something in your audio setup preventing this value from working and making it fall back to something working near that value.

Maybe you can try to see, if alsa correctly recognizes that your DAC is able to play at that sample rate?

Ryp commented 1 year ago

I won't have access to my setup for a while, so I'll try to get back with more info when that happens. Thanks for the reply

midael commented 2 months ago

Bump. I have exactly same problem with spotifyd (when using alsa backend). The spotifyd outputs at 48kHz/S32_LE to DAC. As pointed out by OP, it should be 44.1kHz/S16 (or S32*). My config:

# cat spotifyd.conf
[global]
use_mpris = false
dbus_type = "system"
backend = "alsa"
device_name = "SMSL D6s"
device = "default"
control = "default"
bitrate = 320
device_type = "speaker"
zeroconf_port = 53535
# The PCM sample format to use. Possible values are F32, S32, S24, S24_3, S16. 
audio_format = "S16"
volume_controller = "none"
no_audio_cache = true
cache_path = "/dev/shm"
max_cache_size = 1000000000
volume_normalisation = false
normalisation_pregain = -10
autoplay = true

and...

cat /proc/asound/card0/pcm0p/sub0/hw_params 
access: MMAP_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 1024
buffer_size: 16384

Let me know if additional details are needed.