• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

FIIO KA15 Portable DAC & Headphone Amp Review

Rate this DAC & HP amp:

  • Poor

    Votes: 1 2.9%
  • Not terrible

    Votes: 3 8.8%
  • Fine

    Votes: 15 44.1%
  • Great

    Votes: 15 44.1%

  • Total voters
    34
5. The purple line is the same as above, but the Q value of each shelf filter is multiplied by √2 (it differs from the green line in the bottom right corner; perhaps it is Equalizer APO that is wrong here?)
I believe the difference between the purple and the green lines is simply caused by different sample frequencies (Fs) to calculate the biquad filters.

Here is a simple Excel model of the 4 (biquad) PEQ filters which more or less matches what you done (I played with the gains, they are aligned, but are not exactly the same as yours) using (Fs) 48 kHz for EqAPO and (Fs) 192 kHz for Tiny-A:
  • Green is what you entered in EqAPO (Fs=48kHz; default)
  • Red is Tiny-A (Fs=192kHz; "wrong" Q)
  • Purple is Tiny-A "corrected" (Fs=192kHz; Q corrected with 2^0.5 factor). This is the same as Green except for Fs
  • Blue is what I think you did: same as Purple, but with Q = 0.63 + 0.06 = 0.69 (not 0.95, which is way different)
Chart1.jpg


Zoomed-in, 1-20 kHz:
Chart2.jpg


If I now use Fs = 48 kHz everywhere:
  • Green is EqAPO (Fs=48kHz)
  • Red is Tiny-A (Fs=48kHz; "wrong" Q)
  • Purple is Tiny-A "corrected" (Fs=48kHz; Q corrected with 2^0.5 factor). This is now the same as Green, the two lines are on top of each other, so I offset the purple line by -0.5 dB to differentiate the two lines
Chart3.jpg


Zoomed-in, 1-20 kHz:
Chart4.jpg
 
Last edited:
I believe the difference between the purple and the green lines is simply caused by different sample frequencies (Fs) to calculate the biquad filters.
I think you're right! I set everything to 48kHz. REW unfortunately will only let me choose a sampling rate that both my DAC and ADC support, and my ADC only supports 48kHz and 96kHz (I have another ADC that does 44.1kHz and 48kHz but these two sampling rates produce different dBFS values, which are also different from my other ADC, and I don't know how to adjust this in REW to get the graphs to line up...).
Anyway, I tested the 48kHz and 96kHz on the same DAC as last time and:
  • Both sampling rates produce identical output via Fiio's PEQ
  • On Equalizer APO, the 2kHz - 20kHz region is slightly different between the two sampling rates, but neither lines up with Fiio with just the √2 Q factor.
So I suspect what's happening is that Fiio is calculating the PEQ at a fixed sampling rate, such as the maximum 384kHz, whereas Equalizer APO is using whatever sampling rate Windows has set the output to. Unfortunately, without a 384kHz ADC, I don't know how to confirm my suspicion (Maybe there's a 'fake' ADC I can install that up-samples the 96kHz input from the real ADC to 384kHz?)


  • Blue is what I think you did: same as Purple, but with Q = 0.63 + 0.06 = 0.69 (not 0.95, which is way different)
Sorry, the +0.06 was definitely done after multiplying by √2; so the final Q I used is definitely 0.95 (as you can see in the XML file I included last time).
 
Last edited:
So I suspect what's happening is that Fiio is calculating the PEQ at a fixed sampling rate, such as the maximum 384kHz, whereas Equalizer APO is using whatever sampling rate Windows has set the output to.
Very possible… I thought EqAPO charts (Peace?) were plotted using Fs=48kHz by default which maybe another source of confusion if the actual EQ is based on Windows “true” Fs.

None of this is necessarily “wrong” per se. But sticking with Peak filters is indeed a wise recommendation as they seem to be the most “agreed upon, consistent implementation” of PEQ filters. The minor differences with Fs only affect high frequencies, where EQ is very difficult anyway. And finally, if one uses something like AutoEQ + target as “starting point” ( I do…) and stay with same DSP (KA15 in our case), these differences only affect the starting point, but don’t really matter afterwards when you explore around.
I’m not even sure if FiiO’s wrong LS/HS Q-factor implementation is that big of a deal in the end: has anybody noticed it “by ear” before @jkim measured it?
 
None of this is necessarily “wrong” per se.
Sure, the difference in preamp/master gain, and Fs is fine; but the difference in Q I think is a bug; Regardless, the graph shown in the GUI needs to be correct (it differs due to the Q value difference, but the Fs difference is too slight for me to tell the difference).
Also there's a serious overflow issue with HS filters that hurt my ears when I was playing with Fiio's AutoEQ (I've since learned to put the volume down low before trying a new PEQ...). I will post some graphs soon.

But sticking with Peak filters is indeed a wise recommendation as they seem to be the most “agreed upon, consistent implementation” of PEQ filters.
This is why I've specifically bought a Fiio DAC (the Melody) for my PC so that the PEQ on my phone and computer will be the same (as I often switch my headphones between them). I don't actually care if it is "correct", as long as it sounds just as good.

The minor differences with Fs only affect high frequencies, where EQ is very difficult anyway. And finally, if one uses something like AutoEQ + target as “starting point” ( I do…) and stay with same DSP (KA15 in our case), these differences only affect the starting point, but don’t really matter afterwards when you explore around.
Right, exactly what I've done (although I found setting the target to be the frequency response of another headphone model gave me nicer results...).

I’m not even sure if the wrong LS/HS Q-factor implementation is that big of a deal in the end: has anybody noticed it “by ear” before @jkim measured it?
I did notice by ear a difference when I manually multiplied the Q factors by √2 for the EQ I use, this made it sound slightly worse. But this was after I read this thread, and I wasn't listening to any other PEQ implementations I could discover the difference.
 
I observed a problem with my Tiny A: HS filters incorrectly causing massive gain. I first observed this using the Auto-EQ feature (with the headphones set to "Sennheiser HD 558", and target set to "Flat"): I got horrendously loud and distorted sound (so make sure when first testing a Fiio EQ that you put the volume down! even if the graph looks like it won't increase it much). At the time I thought it was just a bad EQ or my headphones couldn't cope. However I also observed the same problem when doing some other testing in REW and noticed the problem in the produced graphs.

Specifically, here is the simplest test case I could come up with was setting the following Fiio filters:
  • A +0dB peak filter at 20Hz, Q = 1.00
  • A +0dB peak filter at 500Hz, Q = 1.00
  • A +5.5dB high-shelf filter at 6,757Hz, Q = 0.50
  • (7 dummy +0dB peak filters at 20kHz, Q = 1.00; as Fiio only allows you to have exactly 10 filters)
  • (Master Gain +5dB to level match with no PEQ)
The first two filters, despite doing nothing, are needed for the problem to occur.
The results are as follows:
Bad 2.png

  • The black line is no EQ (which should be read as 0dBr)
  • The red line is the problematic Fiio filter
  • The green line is the equivalent Equalizer APO filter (with preamp = master gain - 5dB, and Q values ÷√2)
  • The purple lines are showing that the problem goes away when the parameters of the Fiio filter are ever so slightly adjusted (at the middle-right they still don't align with the Equalizer APO line, but that is likely due to the sampling rate issue discussed above).
  • (Not shown on the graph) doing the inverse changes as the purple lines (i.e. increasing the gain, decreasing the frequency, and/or increasing the Q) causes the issue to still occur, and sometimes get worse (i.e. the volume will get louder).
I've observed the same problems with other PEQ's, but only ones with HS filtters. In particular, I cannot reproduce the problem using a PEQ that has LS filters, but no HS ones.

Unfortunately, unlike the other discovered issues, this is not minor, and I don't have a workaround.

I'd be curious if anyone else can reproduce this issue on a Fiio device (and the TRN black pearl? Which also has the √2 issues for shelf filters).

Code:
Filter  1: ON PK  Fc   20 Hz Gain 0.0 dB Q 1.00
Filter  2: ON PK  Fc  500 Hz Gain 0.0 dB Q 1.00
Filter  3: ON HSC Fc 6757 Hz Gain 5.5 dB Q 0.354

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FiiO_DSP model="SNOWSKY TINY A" version="0.0.1">
  <module name="EQ">
    <eqGroup>
      <param name="masterGain">5</param>
      <eqList>
        <eq index="0">
          <param name="type">0</param>
          <param name="freq">20</param>
          <param name="gain">0</param>
          <param name="q">1</param>
        </eq>
        <eq index="1">
          <param name="type">0</param>
          <param name="freq">500</param>
          <param name="gain">0</param>
          <param name="q">1</param>
        </eq>
        <eq index="2">
          <param name="type">2</param>
          <param name="freq">6757</param>
          <param name="gain">5.5</param>
          <param name="q">0.5</param>
        </eq>
        <eq index="3">
          <param name="type">0</param>
          <param name="freq">20000</param>
          <param name="gain">0</param>
          <param name="q">1</param>
        </eq>
        <eq index="4">
          <param name="type">0</param>
          <param name="freq">20000</param>
          <param name="gain">0</param>
          <param name="q">1</param>
        </eq>
        <eq index="5">
          <param name="type">0</param>
          <param name="freq">20000</param>
          <param name="gain">0</param>
          <param name="q">1</param>
        </eq>
        <eq index="6">
          <param name="type">0</param>
          <param name="freq">20000</param>
          <param name="gain">0</param>
          <param name="q">1</param>
        </eq>
        <eq index="7">
          <param name="type">0</param>
          <param name="freq">20000</param>
          <param name="gain">0</param>
          <param name="q">1</param>
        </eq>
        <eq index="8">
          <param name="type">0</param>
          <param name="freq">20000</param>
          <param name="gain">0</param>
          <param name="q">1</param>
        </eq>
        <eq index="9">
          <param name="type">0</param>
          <param name="freq">20000</param>
          <param name="gain">0</param>
          <param name="q">6.04</param>
        </eq>
      </eqList>
    </eqGroup>
  </module>
  <styleName>HS Bug</styleName>
  <description/>
</FiiO_DSP>
 
Last edited:
I observed a problem with my Tiny A: HS filters incorrectly causing massive gain. I first observed this using the Auto-EQ feature (with the headphones set to "Sennheiser HD 558", and target set to "Flat"): I got horrendously loud and distorted sound (so make sure when first testing a Fiio EQ that you put the volume down! even if the graph looks like it won't increase it much). At the time I thought it was just a bad EQ or my headphones couldn't cope. However I also observed the same problem when doing some other testing in REW and noticed the problem in the produced graphs.
I did some tests tests with a few dongles I had in my backpack (I'm at work; don't tell my boss! :p).

1/ FiiO Tiny-B & Jiezi (3.5mm version). They both use a SPV4040 chip. Setting the above PEQ filters, including the #3 HS, with FiiO Control webapp, I first noticed a significant jump in volume between Gain +3.3 and +3.4dB on #3 HS filter. Playing around a little more more, I was able to make them glitch pretty bad: extremely loud, huge distortion—would certainly be dangerous for your ear !!!. What did it for me was setting all the (10x) filters to HS / G=0.0 / F=20Hz / Q=1.00. Then changing the gain to from G=0.0 to G=0.1 on any filter #3 and above. would make both Tiny-B and Jiezi to glitch severely. Changing the gain on #1 or #2 HS filters was fine, no issue. Global Gain, Windows sampling frequency did not appear to make a significant difference.
2/ FiiO QX13. The PEQ features are, I believe, implemented in its XU316 chip. I had no issue with the HS filters, no glitch—a good thing considering the power of that dongle! To be exact, it does distort if I set two 20Hz HS filters with +12dB gain on each (cumulative!) and don't reduce the Global Gain appropriately... but that would be expected. The FiiO app is not going to fix stupid! I believe QZ13 PEQ is implemented in its XU316 chip.
3/ EPZ TP35Pro. It uses a CB5100 chip, a custom version of an SPVxxx chip. Setting the 10x filters to HS with the WalkPlay webpap, I was able to make it glitch, but for a different set of conditions as compared to Tiny-B and Jiezi: it would glitch on gains +6.1 and above applied to any of the 10x HS filters.

FiiO KA15, the subject of this thread... I don't have it around, but I suspect it won't be any different, perhaps glitching under a different set of conditions involving these HS filters.
In the meantime, it's probably wise to proceed with caution when using High-Shelf filters on these SPV chips... or stick with Peak filters!


EDIT, a few more tests:
4/ FiiO Melody. No issue, messing around with the HS filters, I could not make it glitch. Melody uses a SPV5048, same as the KA15. So, except for the Q-Factor implementation, I would guess KA15 is ok.
5/ NiceHCK Octave. Same as EPZ TP35Pro, glitches with any of 10x HS filters (F=20Hz / Q=1.00), for gain G=+6.1dB and above. Lowering to G=+6.0dB or below immediately resumes normal playing.
5/ iBasso Maccchiato. Same as EZ TP35Pro and NiceHCK Octave.
6/ Hi-Max (CB1200AU). I just received the "upgraded" version—not sure what the upgrade is about as it looks identical to the OG Hi-Max and WalkPlay sees them as identical. Anyway, I had forgotten that the high-shelf filter (HS) is not enabled on these dongles, low-shelf (LS) is... Maybe TTGK knew something...
 
Last edited:
Thanks for this!

EDIT: Please ignore this post, it was all wrong (I thought Fiio's LS/HS filters were equivalent to Equalizer APO's LS/HS filters, but they are actually LSC/HSC filters)
I've tested my Fiio Tiny A using Room EQ Wizard and a cable from the Tiny to my motherboards Line-In, here are my results:

View attachment 506352
The graph will need some explaining:
  • I ran a sweep at -40 dbFS (this was needed to prevent the blue line from clipping), so the lines aren't very smooth.
  • The Green line is with the Tiny A's PEQ disabled but with Equalizer APO running using the same filter file as the "Complex 1 PEQ" graph used here, however I changed the LSC/HSC filters to LS/HS ones as Fiio doesn't support the 'C' versions (thus making it a fairer comparison).
  • The Red Line is the same PEQ but converted to Fiio's XML format, and the Master Gain set to -3 instead of -8 (This is strange because based on the above discussion, I thought the correct master gain would be the APO one +12dB, I will need more testing to work out the correct way to adjust it)
  • The Magenta Line is the same as the Red line, but the first HS and the LS filter having their Q factors multiplied by √2 (and then rounded to 2 decimal points); this means the other shelf filter (the second HS) was not modified. (Note that the first HS filter results do not line up perfectly with the Green line, but increasing the master volume for both tests them to get closer, this suggests to me that it is simply a rounding error)
  • The Blue line is the same as the Magenta line, but the second HS has had it's Q factor increased by a minimal 0.01
  • The Indigo Line is the same as the Magenta line, but the second HS is also multiplied by √2
Bassically, the Fiio Tiny A has same issue as the Melody, and multiplying the shelf Q factors by √2 partially fixed it. But for some reason, any increase to the middle shelf Q factor causes the volume to drastically increase (causing horrendous clipping at reasonable volume levels).

(Ironically, when I applied the √2 fix to a PEQ I've been using for my headphones, music sounds ever so slightly worse, so I'm going to stick to the "buggy" version).
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FiiO_DSP model="SNOWSKY TINY A" version="0.0.1">
  <module name="EQ">
    <eqGroup>
      <param name="masterGain">4</param>
      <eqList>
        <eq index="0">
          <param name="type">1</param>
          <param name="freq">105</param>
          <param name="gain">8</param>
          <param name="q">0.7</param>
        </eq>
        <eq index="1">
          <param name="type">0</param>
          <param name="freq">125</param>
          <param name="gain">6.3</param>
          <param name="q">3.23</param>
        </eq>
        <eq index="2">
          <param name="type">0</param>
          <param name="freq">125</param>
          <param name="gain">-6.3</param>
          <param name="q">3.23</param>
        </eq>
        <eq index="3">
          <param name="type">0</param>
          <param name="freq">800</param>
          <param name="gain">-1.5</param>
          <param name="q">1.55</param>
        </eq>
        <eq index="4">
          <param name="type">0</param>
          <param name="freq">800</param>
          <param name="gain">-1</param>
          <param name="q">1.55</param>
        </eq>
        <eq index="5">
          <param name="type">0</param>
          <param name="freq">1524</param>
          <param name="gain">4</param>
          <param name="q">0.78</param>
        </eq>
        <eq index="6">
          <param name="type">0</param>
          <param name="freq">2921</param>
          <param name="gain">2.2</param>
          <param name="q">2</param>
        </eq>
        <eq index="7">
          <param name="type">2</param>
          <param name="freq">6000</param>
          <param name="gain">4.6</param>
          <param name="q">0.54</param>
        </eq>
        <eq index="8">
          <param name="type">0</param>
          <param name="freq">9200</param>
          <param name="gain">-4.3</param>
          <param name="q">5.97</param>
        </eq>
        <eq index="9">
          <param name="type">2</param>
          <param name="freq">15000</param>
          <param name="gain">2.2</param>
          <param name="q">0.7</param>
        </eq>
      </eqList>
    </eqGroup>
  </module>
  <styleName>Complex PEQ Test</styleName>
  <description>The LS/HS filter Q factors have not yet been multiplied by √2</description>
</FiiO_DSP>

This is news, so how could I configure correctly the High Shelf and Low Shelf Filters on the FiiO KA15 since I us EQ APO reference in order to copy the values, do I need to convert, how?
 
This is news, so how could I configure correctly the High Shelf and Low Shelf Filters on the FiiO KA15 since I us EQ APO reference in order to copy the values, do I need to convert, how?
From reading the source code, given the dbGain and q of your Equalizer APO LS/HS filter, you just need to compute:
Code:
a = pow(10, dbGain / 40);
s = 1.0 / ((1.0 / (q * q) - 2.0) / (a + 1.0 / a) + 1.0);
centerFreqFactor = pow(10.0, abs(dbGain) / 80.0 / s);

And if your converting a low-shelf, multiply your Fc frequency by centerFreqFactor and if it's a high shelf, divide it by centerFreqFactor. This will give you the Fc for an equivalent Equalizer APO LSC/HSC filter.
(Don't forget to then multiply the q value by √2 when using these settings for a low-shelf/high-shelf filter in Fiio)
 
Last edited:
From reading the source code you just need to compute:

Code:
a = pow(10, dbGain / 40);
s = 1.0 / ((1.0 / (q * q) - 2.0) / (a + 1.0 / a) + 1.0);
centerFreqFactor = pow(10.0, abs(dbGain) / 80.0 / s);

And if your converting a low-shelf, multiply your frequency by centerFreqFactor and if it's a high shelf, divide it by by centerFreqFactor.

Sorry I'm not really a technician, didn't quite understand. Basically, what I want to know is:

If I have in APO Eq, interface Peace, the following values
Low Shelf Filter or High Shelf Filter
-Frequency: 105
-Gain Value: 1.2
-Quality: 0.7 (Q as slope)

How can I set these values correctly in FiiO EQ so that it means the same
 
Sorry I'm not really a technician, didn't quite understand. Basically, what I want to know is:

If I have in APO Eq, interface Peace, the following values
Low Shelf Filter or High Shelf Filter
-Frequency: 105
-Gain Value: 1.2
-Quality: 0.7 (Q as slope)

How can I set these values correctly in FiiO EQ so that it means the same
I do not know what you mean by "Q as slope", I'm assuming you gave me a "Q" value, i.e. your config has something like this:
Code:
Filter: ON LS Fc 105 Hz Gain 1.2 dB Q 0.7

And not a "slope" value, which would look like this:
Code:
Filter: ON LS 0.7 dB Fc 105 Hz Gain 1.2 dB

I've uploaded a converter script to that does the maths for you, if you put the above into it you get an xml file that when uploaded to Fiio it will give you:
  1. Gain = 1.2 (Same as yours)
  2. Freq = 109 (this is the result of the formulas I showed above)
  3. Q = 0.99 (this is your Q value multiplied by √2 due to the bug discussed in this thread)
If on the other hand what you gave me was actually a "slope" value then another complicated formula will give you the same results as above, but with "Q = 0.24"

If you can give that script a try so I can see if my instructions are clear enough for non "technicians" to use it!
 
I do not know what you mean by "Q as slope", I'm assuming you gave me a "Q" value, i.e. your config has something like this:
Code:
Filter: ON LS Fc 105 Hz Gain 1.2 dB Q 0.7

And not a "slope" value, which would look like this:
Code:
Filter: ON LS 0.7 dB Fc 105 Hz Gain 1.2 dB

I've uploaded a converter script to that does the maths for you, if you put the above into it you get an xml file that when uploaded to Fiio it will give you:
  1. Gain = 1.2 (Same as yours)
  2. Freq = 109 (this is the result of the formulas I showed above)
  3. Q = 0.99 (this is your Q value multiplied by √2 due to the bug discussed in this thread)
If on the other hand what you gave me was actually a "slope" value then another complicated formula will give you the same results as above, but with "Q = 0.24"

If you can give that script a try so I can see if my instructions are clear enough for non "technicians" to use it!
Wow, this is such an amazing effort. Many thanks for the time you put into this. I highly appreciate it.
About the Q as Slope. I really don't know. I just put it because I saw it on the UI I'm using for APO and I just wanted to give you as many details as possible. Here goes a screenshot of what I saw
1769736297615.png

I will try your script now. Thanks again
 
I do not know what you mean by "Q as slope", I'm assuming you gave me a "Q" value, i.e. your config has something like this:
Code:
Filter: ON LS Fc 105 Hz Gain 1.2 dB Q 0.7

And not a "slope" value, which would look like this:
Code:
Filter: ON LS 0.7 dB Fc 105 Hz Gain 1.2 dB

I've uploaded a converter script to that does the maths for you, if you put the above into it you get an xml file that when uploaded to Fiio it will give you:
  1. Gain = 1.2 (Same as yours)
  2. Freq = 109 (this is the result of the formulas I showed above)
  3. Q = 0.99 (this is your Q value multiplied by √2 due to the bug discussed in this thread)
If on the other hand what you gave me was actually a "slope" value then another complicated formula will give you the same results as above, but with "Q = 0.24"

If you can give that script a try so I can see if my instructions are clear enough for non "technicians" to use it!
Just wanted to let you know I used the script and it works flawlessly. Couldn't get it to work on JDoodle though, got the following error:
1769742090522.png

But I ran it on command line, and everything worked just fine, tested both ways.
1769742260625.png

Thanks again! And hopefully FiiO someday fixes the issues on their devices.
 
Just wanted to let you know I used the script and it works flawlessly. Couldn't get it to work on JDoodle though, got the following error:
View attachment 507937
Sorry, I must have forgotten to update the link when I uploaded a new file.
But I ran it on command line, and everything worked just fine, tested both ways.
View attachment 507942
Have you actually tested the file on your device? (My Fiio Snowsky Melody has just arrived, and I've discovered it does not let you use profiles you've made for another device, so unless you have a Fiio Tiny A you will likely need to modify the device_model variable at the top of the script; I've uploaded a new version of the script now and modified my post with instructions).
Also if you tell me the values for device_model and device_version for your KA15, I can update my instructions with them.

Thanks again! And hopefully FiiO someday fixes the issues on their devices.
After I do some more testing I'm going to complain to them, but I've heard others have with no luck.
(The issues are very minor except for the volume overflow thing that can really hurt your ears!)
 
I believe the difference between the purple and the green lines is simply caused by different sample frequencies (Fs) to calculate the biquad filters.

Here is a simple Excel model of the 4 (biquad) PEQ filters which more or less matches what you done (I played with the gains, they are aligned, but are not exactly the same as yours) using (Fs) 48 kHz for EqAPO and (Fs) 192 kHz for Tiny-A:
  • Green is what you entered in EqAPO (Fs=48kHz; default)
  • Red is Tiny-A (Fs=192kHz; "wrong" Q)
  • Purple is Tiny-A "corrected" (Fs=192kHz; Q corrected with 2^0.5 factor). This is the same as Green except for Fs
  • Blue is what I think you did: same as Purple, but with Q = 0.63 + 0.06 = 0.69 (not 0.95, which is way different)
View attachment 507162

Zoomed-in, 1-20 kHz:View attachment 507163

If I now use Fs = 48 kHz everywhere:
  • Green is EqAPO (Fs=48kHz)
  • Red is Tiny-A (Fs=48kHz; "wrong" Q)
  • Purple is Tiny-A "corrected" (Fs=48kHz; Q corrected with 2^0.5 factor). This is now the same as Green, the two lines are on top of each other, so I offset the purple line by -0.5 dB to differentiate the two lines
View attachment 507172

Zoomed-in, 1-20 kHz:
View attachment 507173
TLDR: Fiio's PEQ seems to be calculated under a fixed assumption that the sampling rate is at least 96kHz (the difference in measurements between higher sampling rates is very slight so I'm not certain it's not using 384kHz as I previously predicted, but it's definitely not using 44.1kHz, 48kHz, or 88.2kHz)

With the multitone loopback analyzer I can measure the frequency response where the input and output devices have different sampling rates! So I've compared every sampling rate supported by the Fiio Tiny A, and imported the measurement data into REW for graphing.
(For some reason each of the measurement results seemed to have a inconsistent baselines baseline somewhere between -5.9dBFS and -7.4dBFS, but I aligned them all to 31.5kHz 0dBFS).

Note: I did all measurements with the input set to 96kHz; except that when the output was 48kHz, I set the input to 48kHz, and when it was 44.1kHz I used a different 44.1kHz (the latter two changes where needed to prevent lots and lots of distortion showing up).

First I tested Fiio PEQ at different sampling rate, they were mostly identical:

Fiio PEQ.png

And zoomed in to the bottom right section:
Fiio PEQ (Zoomed).png


There was some different behaviour with the green lines (44.1kHz and 88.2 kHz): the light green shows what I expect is a low-pass filter at half the sampling rate taking effect, but the dark green has some very bizarre distortion starting at about 17.8kHz:
Fiio PEQ (No Smoothing).png


Any ideas what's up with the 88.2kHz/Dark green line (the same problem shows when using Equalizer APO)?

EDIT: and here is Fiio's PEQ (@384kHz, in red) versus Equalizer APO. This time I aligned the graphs so that -11.9dBFS @11.6kHz (which is the left intersection point of the black line). This is so I can compare the slopes better of the Zoomed in section.
Equalizer APO.png

And zoomed in:
Equalizer APO (Zoomed).png

Equalizer APO @96kHz is in green. Those with a lower sampling rate are in blue, and those with a higher one are in magenta. As you can see, other than the blue lines (Equalizer APO <96kHz), the lines are all mostly the same, suggesting that any difference may actually just be a measurement error or noise, and not different DSP behaviour. However, the green line is closest to the red line.
 
Last edited:
Sorry, I must have forgotten to update the link when I uploaded a new file.

Have you actually tested the file on your device? (My Fiio Snowsky Melody has just arrived, and I've discovered it does not let you use profiles you've made for another device, so unless you have a Fiio Tiny A you will likely need to modify the device_model variable at the top of the script; I've uploaded a new version of the script now and modified my post with instructions).
Also if you tell me the values for device_model and device_version for your KA15, I can update my instructions with them.


After I do some more testing I'm going to complain to them, but I've heard others have with no luck.
(The issues are very minor except for the volume overflow thing that can really hurt your ears!)

Yes. I tested on my device. I changed device_model to KA15 and device_version to 1.1.3. Then imported to FiiO website and applied to the device profiles.

Another important issue is the device entering on some form of sleep mode after silence or not playing anything for a few seconds and then take some time to wake up again. Let's say you have a track which ends with 5 seconds of silence, the when a new track starts you won't hear some notes at the beginning. I don't know if it's just on the KA15 or other devices as well
 
Yes. I tested on my device. I changed device_model to KA15 and device_version to 1.1.3. Then imported to FiiO website and applied to the device profiles.
Thanks!

Another important issue is the device entering on some form of sleep mode after silence or not playing anything for a few seconds and then take some time to wake up again. Let's say you have a track which ends with 5 seconds of silence, the when a new track starts you won't hear some notes at the beginning. I don't know if it's just on the KA15 or other devices as well

Earlier in this thread, there was some advice:
- One can disable sleep mode (hold volume down before connecting to USB) to disable this effect.
- On 1.0.4 firmware, the sleep mode is entered after 3 minutes instead of few seconds of silence.
- Without sleep mode, stopping the playback still shuts down some circuitry (current indicator falls from 140 mA during playback to 100 mA instead of 30 mA in sleep mode). A noise is emitted to the speakers, as if the ground-loop-breakage feature of the balanced output wasn't working.
- One can fool the device to play something really quiet using Sound Keeper (or an online tone generator with minimum volume, reduced volume in Windows volume mixer with Ears extension with -25 dB gain). From my experiments, 10 Hz Sine or pink noise in the -100 dB area is enough to keep the KA15 alive so it doesn't produce any noise.
Yes, you have to add noise to prevent noise:)
I've also heard people disabling some USB power saving feature in their OS.

It's definitely not just the KA15 though, I've had a similarly annoying problem with an optical out, which I fixed with SoundKeeper.
 
Thanks!



Earlier in this thread, there was some advice:

I've also heard people disabling some USB power saving feature in their OS.

It's definitely not just the KA15 though, I've had a similarly annoying problem with an optical out, which I fixed with SoundKeeper.
I do use Sound Keeper but as roladyzator mentions. When the playback is stopped the issue still exists and is pretty annoying when connected to a phone where I don't have sound keeper (At least I don't know if there's a similar app) which is funny because the product is marketed for using with your phone.
 
Yes. I tested on my device. I changed device_model to KA15 and device_version to 1.1.3.
Out of curiousty, does version 0.0.1 work? (To test it, you can just change the line at the top of the xml that says <FIO_DSP ... to say):
Code:
<FiiO_DSP model="KA15" version="0.0.1">
 
I do use Sound Keeper but as roladyzator mentions. When the playback is stopped the issue still exists and is pretty annoying when connected to a phone where I don't have sound keeper (At least I don't know if there's a similar app) which is funny because the product is marketed for using with your phone.
Which is why it turns itself off (to save your phones battery).
I take my dongle and headphones off whenever I'm not listening to anything on my phone, so I've never noticed any power saving features, and so I haven't the faintest clue how to fix them on a phone.

(the simplest thing to try is holding volume down before connecting it to your phone as suggested by the post I quoted above).
 
Out of curiousty, does version 0.0.1 work? (To test it, you can just change the line at the top of the xml that says <FIO_DSP ... to say):
Code:
<FiiO_DSP model="KA15" version="0.0.1">
I changed now and it works as well
 
Back
Top Bottom