Home of the Squeezebox™ & Transporter® network music players.
Results 1 to 5 of 5
  1. #1
    Junior Member
    Join Date
    Jul 2020
    Posts
    4

    pcp resampling works for DSD playback?

    I played around with piCoreplayer 6.1.0 and found out that when I enable resampling, despite my DAC not support native DSD nor DoP, I can hear the playerback.
    below is my resampling setting.

    MAX_RATE="384000"
    UPSAMPLE="vX::4:28:99:100:50"

    but when it starts playing, the sound is very stutter, if I pause the playback, wait a few seconds, and resume, the sound become smooth for about 1 minutes, then again stutter comes in.
    looks like it runs out buffer.

    I'm wondering if this can be fixed by some tricks?
    when it play smoothly, the sound quality is very good, I will say it sounds better then c-3po plugin for LMS.
    it could be a good solution for those who don't have DSD support DAC.

  2. #2
    Junior Member
    Join Date
    Jul 2020
    Posts
    2
    I think your issue is the sample rate is set too high. I had a similar problem running higher than 96K and settled on the following args:

    /usr/local/bin/squeezelite -n "ABC" -o sysdefault:CARD=ALSA -a 80:4:32:1: -b 20000:500000 -c pcm,flac,dsd,mp3,ogg -r 96000 -R vE::4:28:95:105:45 -s 127.0.0.1 -v -W

    This works perfectly fine on my 3B with DSD resampled and sent both to my DAC via USB and my Integra AV via HDMI.

  3. #3
    Junior Member
    Join Date
    Jul 2020
    Posts
    4
    Quote Originally Posted by rxetera View Post
    I think your issue is the sample rate is set too high. I had a similar problem running higher than 96K and settled on the following args:

    /usr/local/bin/squeezelite -n "ABC" -o sysdefault:CARD=ALSA -a 80:4:32:1: -b 20000:500000 -c pcm,flac,dsd,mp3,ogg -r 96000 -R vE::4:28:95:105:45 -s 127.0.0.1 -v -W

    This works perfectly fine on my 3B with DSD resampled and sent both to my DAC via USB and my Integra AV via HDMI.
    Great tips, your setting works like a charm! Thank your for sharing this, you made my day!
    I monitor the CPU utilization with top command, and see it's about 22% with your setting, sometimes goes up to 24%.
    looks like piCorePlayer can only use one core so 25% means full loaded.
    if I turn up the sample rate to 192K, it will still work but CPU is always 25% and operation response become slower.

    I did tried lower sample rate with my original resample setting and it wasn't affect much back then, I suppose the resample setting -R vE::4:28:95:105:45 also play it's part.
    hope I can get more understanding about these magic numbers.

  4. #4
    Junior Member
    Join Date
    Jul 2020
    Posts
    4

    found some detailed explanation

    I found some great explanation about those resampling parameters, I'd quote them here maybe it will help others.
    The current implementation in Squeezelite does upsampling to the
    highest interger rate your DAC cupports. Thus if your DAC's maximum
    rate is 192, it will upsample to 44.1 to 176.4. If your DAC does not
    support 176.4, you can use the -r option (or max sample rate in the gui)
    to set the max rate to 96, then squeezlite will upsample to 88.2. Even
    upsampling to 88.2 will usually make a significant improvement. There
    has been talk about giving the upsampling more flexibility so you could
    choose 192 in this case.

    The SoX resampling gives you several different parameters to adjust,
    choosing the right one can be a daunting task so they came up with
    what are usually called "recipes", predefined combinations of
    parameters. These are good places to start your exploration. When you
    give Squeezelite a set of paramters you first give a recipe, then you
    can add modifiers that over ride the parameters in the recipe.

    The upsampling "argumnt" consists of several fields separated by colons
    (:). If there is nothing specified for a particular field the default
    for the chosen recipe is used. There are up to 7 fields. If you are not
    specifying any of the later fields you do not need to include all the
    colons. Some examples:
    abc first field only, all others default
    abc:xyz first and second field, others default
    abc:::def first and fourth fields, others default
    :xyz:::def default first field, fourth field and others default

    The first field is the basic recipe. It is special, it is made up of
    three subfields, each specified by a letter.
    The first letter is the "quality", it can be one of these characters:
    v h m l q Note the fourth character is the lower case "ell".
    These stand for "very high", "high", "medium", "low" and "q"

    A word on these, the differences are not necessarily related to how they
    sound, they refer to how far the aliases are attenuated (remember the
    engineering community regards the alias attenuation as the primary
    figure of merit for a filter). These primarily relate to how long the
    filters are. All these filters work by performing calculations on a
    series of samples in the file, the longer filters use more samples, the
    shorter filters use fewer samples. The greater the alias attenuation
    the longer the filter has to be. This CAN affect what you hear. Do not
    just blindly use the "very high" setting, it may not be the best
    sounding.

    The second leter is the "phase". You have a choice of: L M I (that
    is upper case "eye"). L is linear phase, M is minimum phase, I is
    intermediate phase. There are LOTS of descriptions of what these are
    out there on the web so I won't go into detail.

    The third letter is: s It is either included or not. This specifies
    a very steep filter curve. If the s is not included a slightly shallower
    filter is used.

    The deault is hL (no s). If a letter is left off the default is used.
    Thus 'v' is the same as 'vL'. 's' is the same as 'hLs'. 'Ms' is the same
    as 'hMs'.

    All that just for the first field!

    The second field contains flags. Nobody really knows what these do so
    its safest to leave this field blank.

    The third field is attenuation. It is possible that the upsampling can
    clip on signals that are at or very close to maximum, this attenuates
    the input so this clipping doesn't happen. The argument is a number,
    which is the attenuation in db. Thus '6' is 6db of attenuation. The
    defualt is '1', which is probably good most of the time.

    The fourth field is "precision", it is the number of bits used in
    calculations. We know that 20 and 28 are sometimes used depending on
    other parameters, this over rides that and uses the value for
    everything. I'm not sure if values other than 20 and 28 actually do
    anything.

    The next two fields let you tweak the filter curve, how steep it is and
    where it starts. You specify a start frequency and a stop frequency.
    This is done by a ratio of the Nyquist frequency, NOT an actual
    frequency. Both parameters are in the range 0-100. Thus for a 44.1
    input a start of 90 means starting to roll off at 19.845KHz. An end
    (where the curve bottoms out) of 100 would be at 22.05KHz.

    The fifth field is the end of the passband (or the point where the curve
    starts falling)

    The sixth field is the stop band start (or the point where the curve
    bottoms out)

    The seventh field is the phase. This lets you specify exactly what you
    want the phase to be. 0 is minumum phase, 25 is intermediate phase and
    50 is linear phase (these are equivalemt to the M, I and L defined
    above). 100 is maximum phase, but that is not really used. The phase
    relates to how much pre and post ringing there is. 0 has just post
    ringing, 50 is equal amounts post and pre, 25 is in-between, 100 is all
    pre-ringing.

    When exploring options its probably a good idea to just limit yourself
    to the first field at first. See if you can hear a difference between
    very high, high, medium etc. Find the one you like the best then try
    that with L M or I. The other I would recommend trying is the precision.
    Try a variety of music with each setting.
    the above is from this thread

  5. #5
    Junior Member
    Join Date
    Jul 2020
    Posts
    2
    Quote Originally Posted by ngok sun View Post
    I did tried lower sample rate with my original resample setting and it wasn't affect much back then, I suppose the resample setting -R vE::4:28:95:105:45 also play it's part.
    hope I can get more understanding about these magic numbers.
    I'm glad to hear it worked out for you! If you want to read up a bit more, I took my settings from the following recommendations:

    Archimago's Musings: More fun with digital filters! Archimago's "Goldilocks" Intermediate Phase suggestion

    Also see:

    Archimago's Musings: Raspberry Pi 3 B+ "Touch" Optimizations; CRAAP Settings, and the "Extremus" Filter Setting.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •