Jump to content

'FeralA' decoder -- free-to-use

Recommended Posts

1 hour ago, fas42 said:

John, I just tried a couple of the tracks, after downloading - and I will have to say you've done a nice job on this ... ūüĎć.


I am working hard on some usability upgrades right now as learned from the Carpenters attempt.


During my mastering 'attempt'  (I do hate mastering) I did learn some things about the Carpenters recordings, and apparently some of the things can be carried forward to other recordings.  Mastering is very tricky for me since my hearing changes very significantly over the day, so I must depend on other 'tells' like strange distortions that happen when frequency bands don't match.  This method is mistake prone, but as good as I can do!!!


Hopefully I can someday communicate that the decoder is a tool, and the results are only as good as the skill of the person using it.  I am almost audiophile-hearing-disabled, but trying to use what hearing that I do have to configure & demonstrate the decoder.  There is a learning curve, and still new add-ons are needed (the decoding itself is now 'perfect') -- but the EQ after decoding still needs some work.   The correct EQ can only come with experience -- but my hearing makes that a challenge to add the right things to the decoder.


After some work, the EQ modes should reduce to up to 5-6 choices in total, and perhaps fewer.


* I can clearly hear 'decoder dynamics distortions' and 'decoder dynamics errors'', but cannot reliably do the post-decoding EQ.


The decoder is a gift, but sometimes like 'gifts', they get put by the wayside.  I sure hope that even just a few appreciate what the tool can give them (sometimes.)


Thanks again for your feedback...   It is mostly recently that the feedback has been getting better.







Link to post
Share on other sites

More fun snippets:

1970 Carpenters Album...   Not quite as good as 1971, some of the recordings aren't as good quality, but still pretty good!!!

Next, probably won't be Carpenters -- looking at some ABBA that might be amenable to snippets.   If not, might find something else.




I have REALLY learned some features that will be added for Friday!!!


Link to post
Share on other sites

Another set of snippets:

Linda Ronstadt, 1977 Simple Dreams...


You should be able to more clearly hear her voice, unlike recent CDs (at least those I have heard.)

I NEVER claim perfection with my 'mastering' because I suck at it.  The decoder, on the other hand - it is perfect at dynamics decoding,

EQ has been a tedious experience, but gonna upgrade EQ for Friday:




Link to post
Share on other sites

I screwed up on the Carpenters 1970 decoding operation.   I am dealing with such variable hearing in the bass region, I make lots of mistakes.   The previous 1970 didn't have the correct bass balance (basically, I used the 'L' LF mode instead of 'D'.)   There is no real tweaking.


Here is a much better version of the 1970 snippets (same location):



I did learn that using --fz=opt instead of --fz=max (max is the highest quality) appears to work on recordings with defects.   Leaving some 'fog' in the recording is like a soft focus photographic lens.   Sometimes not showing all details isn't a bad thing.   So, mostly because of speed, but also because of quality matters, I only used --fz=opt.   The sound is more mellow.




The next decoder version is on schedule, but I am on a bit of a downer -- there will have to be 4 or 5 versions of HF equalization that I didn't expect.   The default mode will 'work' much better than the old decoding, but there will be options to make the sound a little more accurate.


Also, I'll be adding some 1st order EQ capabilities that do the anti-distortion automatically for you,  So, if you want to do a --pvh=9k,3  (a HF 9kHz boost of 3dB, 1st order so there is no 'q'), you JUST get the boost.   However, if you do this:  --pvdh=9k,3, the decoder will do the intricate sequence to mitigate the distortion products.   It is like that --pvdh is a macro that unfolds into multiple --pvh.   Also, the anti-distortion modes work differently in different frequency bands.   All of that will be automatically handled.



Link to post
Share on other sites


I have never been happy with decoding the Carpenters 1970 album even though I demo it from time to time.   I believe that telling the truth means showing both the good and bad.   I am now MUCH happier with the results. (Not quite available yet, but probably approx +1Hr from posting.)


I found some minor errors (or they seem minor) in the EQ, a 5Hz error (yes, only 5Hz.)  After the 5Hz correction, several recordings 'POPPED', including 1970 Carpenters.   I am doing a decode again (I regret showing the old versions!!!)  I'll replace the old version with the new version soon today (about 1Hr.)


Also, the new commands are progressing.   Now, if you want to do 1st order EQ (preferred for decoding), the anti-distortion can be enabled so that the user can do it without a long intricate set of EQ filters.   It is much nicer for me also -- I keep making mistakes when typing in the EQ sequences on the command line.   Most of the time, the error is only sliding a filter over a little -- but sometimes I have blasted my ears because of a typing error.


The new 1st order EQ greatly simplifies the 'high quality' EQ modes.


The 1st order improvement has little to do with the new decoding command modes/structure.  I am still thinking about the new submodes.   I can program any reasonable command set within a few minutes -- the hard part is documenting it!!!   So, I probably won't really have the new command set ready for my testing until tonight.   I'll be testing over the night and make the decoder available at ab 36Hrs from this posting time (9PM USA Eastern TIME on friday.)   Even if the commands are imperfect, but close to what I have planned -- I will try to make the decoder available to play with tomorrow late afternoon/early night.   I highly doubt that I'll have to compromise anything though.


BTW -- also have done some 'hail Mary' type speedup attempts.   They are mostly decreasing CPU cache usage and making the locality of reference better.   I don't see much of an improvement, even though I know that there IS an improvement.   My CPU has a huge local cache for each core (4X the usual consumer processors), so there is very little issue about locality of reference.   However, I am pretty sure that there will be an additional speedup on normal i7 machines (I don't know much about AMD machines.)


Working very seriously -- how come the decoder keeps getting better...  WIll it ever be finished?  I do have other things to do!!!





Link to post
Share on other sites

Something REALLY useful just happened.   Someone posted a useful recording, however obscure sounding.   They posted a copy of 'Breakfast in America' that is NOT FA, but it is clean enough to make sure that I can use it to compare what the decoder does.

I learned something and I am RUSHING to make sure that the decoder and 'Start Using' doc is updated.




Link to post
Share on other sites

Because of the 'Breakfast' revelation, I am doing a LOT of testing/verification.   I will MOST PROBABLY be delayed tonight, but Saturday is a definite release.  I just cannot do everything today.  If I would have had the reference a day earlier, it would have been easy to complete the job.   The biggest problem on the FA project has been lack of references, and my estimation of the original isn't always accurate.


The doc is ready (maybe minor change), and the code itself is pretty well tested.   However, a few hours ago I learned something EXTREMELY useful about the EQ.  I wanna make sure that everything is as good as possible, and as you know -- I have been in EQ-h*ll for the last few weeks.  (My work-time is limited because of my hearing also.)


I had made a FULL commitment for tonight, but I think that we all believe that quality is better than anything else.

So, there IS a delay, and IF I happen to get the code fully tested & ready tonight, I'll let you know.  However, the chance is <<50%.


In fact, this is SO important to me, I'll be doing NO OTHER distractions on the forums, etc.

Tomorrow, +30Hrs from now (19 Mar 2021 2100 USA EST time.)


Link to post
Share on other sites

New release:  V2.1.4A

No --fa submodes needed!!!


It just works.  The big bugaboo is that some material has LOTS of low bass, and the decoder can produce it.  Older versions of the decoder did have false LF rolloff -- this one does NOT.

Demos will be coming in under +24Hrs.   The results appear truly good (and, again, the EQ is almost provably correct.)   Sadly (or good news) -- NO submode tweak!!!


If you do have material with excess bass, just use something like this:

--pvdl=50,-3 or --pvdl=25,-6  (-3dB at 50Hz or -6 at 25Hz.)   You might need to try a few variants.   IT IS NOT INCORRECT FOR THE DECODER TO OUTPUT LOTS OF BASS.


Most recordings don't produce too much bass - just be aware about the unlimited bass response.   The EQ is canonically correct now -- I have been trying so very hard to make the EQ correct.   I FOUND A 'TELL' instead of depending on 'frequency response balance'!!!!  This LF EQ is almost provably correct!!!



Link to post
Share on other sites


I couldn't fully test this release because of finding te the *finally* correct LF EQ just a few hours ago.   However, there might be other effects that I am missing.

If there need to be any changes, even if they might sound significant, the changes would definitely  be trivial. 


During a run of the demos, I will be  studying the output -- and will probably produce a V2.1.4B if there are any problems.  I am also doing some other tests tomorrow morning.


Again, I can NOT *DIRECTLY* hear whether or not there needs to be any response balance fixes.   For full testing (since my hearing is unreliable), it requires a strange set of comparisons and tests (very slow, very tedious), but with the new -- great LF fixes, and the health problems of a family member, I couldn' test as completely as  I normally try to do.


Private feedback is welcome -- this project is finishing up about the time that my hearing is failing.   I know that the dynamics are PERFECT, but it is like my brain almost cannot distinguish frequencies anymore (yet I hear the tones.)   The failure syndrome of my hearing makes me wonder about a stroke, I can HEAR ENERGY of a frequency, but the tone is meaningless now!?!??!?  I can distinguih highs and lows generally -- and hear super low bass as separate from bass, but that is about it.


Another possible bug is a 'release version' could have a bug because of a transcription error.  I get very worried when I try to hurry!!

I'll give a report tomorrow morning (+8Hrs) after a full analyss and state whether or not the decoder is doing what I had thought I  heard earlier about 8hrs ago.







Link to post
Share on other sites

As I had feared -- I made some errors in the release.  The Windows version V2.1.4D is being compiled right now (tested as V2.1.4C.)

The Linux & StartUsing document will probably be uploaded before the Windows version.   I'd guess, if the Windows version really works, that it will be updated

for downloading within the next few hours.   I'll announce it along with the demos.


My mistakes in V2.1.4A:


1) A transcription error.   With my unreliable hearing, I didn't catch the problem until after a long rest.

2) Borked DolbyA decoding (didn't conditionalize some added code for FA -- so it was also enabled for DA.)   This messed up DA decoding had existed for at least 1wk in my test code.  I am glad that I thought of checking it!!!  (I don't really intend the un-offical demo copies to be as DA-reliable as they should be for pro use.   There is at least 1 full work day of testing to pronounce a DA mode release to be correct and fully functioning.)


Also, fixed a historical quality matter:

When decoding in full quality modes, there is a special way that the 'signal * gain' calculation is done.   When doing the calculation in my speical way, the modulation products and distortion of the waveforms is suppressed by a large amount.   This special calculation is NOT known anywhere that I have ever found -- but I'll be disclosing it someday soon.  (I have already privately released the source code for the important parts of the program -- I doubt that even a genius could read it though.   There is math in there that is simply not done anywhere else.)


Unfortunately, when decoding material that was created with a DolbyA HW unit, DolbyA created distortion is removed from the signal.  This distortion is mostly in the 20Hz to 500Hz range, but is still important up to 1.5kHz (yes, that distortion is in your FA recordings -- multiplied by seven times!!!)   My mistake was to do the anti-distortion on the 1kHz to 3kHz segment of the MF band.  Doing the anti-MD in that range actually INCREASED the distortion, and it was audible (I didn't realize that I had made this mistake.)   So, the anti-MD is disabled for more of the MF band.   (The 'perfect' anti=MD decoding in the 1kHz to 3kHz range allowed the distortion that needed to be undone to leak through.)   The actual MF band, even though the filter is 80Hz to 3kHz, the frequency range of significant energy is between 40Hz and about 9kHz.   anti-MD is still used in the 3kHz to 9kHz segment of the MF band, but the rest of the MF band must act EXACTLY like a true DolbyA unit to recover the signal from the distorted FA version.


Of course, the anti-MD is definitely used for the HF0/HF1 bands.



Link to post
Share on other sites

Sorry, I got distracted, but the V2.1.4D version of the decoder is ready (has been for several hours.)

The demos completed building also, but lost track of time.

Missing out on this one is simply a bad mistake.


I can see that some people have already been looking for this version - it is ready:


Snippet demos:



The decoder (which REALLY works this time - V2.1.4A had some typos rendering the results bad/mssing bass, and found some really nice improvements) is ready.


This version has LOTS of important changes (well, V2.1.4A also had most of them also.)  V2.1.4D is simply the best ever PERIOD.    There is NO OTHER WAY to get a clean copy of most recordings nowadays.


There was even a hidden layer of EQ that I had missed all these years and the V2.1.4D versions has the missing layer.  (It really was hidden.)

I know that in some of the comparisons, you MIGHT notice less bass on the decoded versions -- if one uses common sense, the decoded version REALLY IS much more accurate.  The compressed, almost caliope-type BASS of RAW FA is simply GARBAGE.   The decoded versions are much more normal.


In some comparisons, the difference in clarity is profound, sometimes the sound is very similar.   There was something missing in the past, and there definitely was missing 'clarity' WRT the highs.   This has NOTHING MISSING.   The results have NOTHING MISSING.




Link to post
Share on other sites

Got some feedback, and might not have gotten the bass right YET.  (Again  -- my hearing is strange, so this is difficult.)


Working on the LF again.

Might be a release tomorrow.

Basically, the slope in the LF downards is too sharp.  (That is, as the freq goes down, there must be more and more  attenuation because of the EQ used in the encoding side of things.)   I believe that the rate of increase in the attenuation must less than current.


If only, I could measure some of this!!!

The highs are fantabulous, but there IS something wrong with the lows, and I cannot hear it!!!


I just removed about 9dB of bass attenuation, and I cannot hear the difference!!!  I mean, not at 40Hz, but at 200Hz!!!  The bass in my hearing below about 500Hz is really gone. As long as I can detect the correct slope, the results can be made ot be perfect.   ALL of the infrastructure is complete, I just need a few, last numbers.   Depending on time of day, perfection in the LF can be 10-12dB different below 200Hz!!!


Recently, when trying to get feedback, there was an inability to explain the problems with the LF.  I can tell that by my HF hearing that all is good there in the HF.

The LF is where the problems are, and just a few hints would solve the problems (really!!!)


Please privately contact me, and help finish things thing a few iterative hints (I can provide test materials.)

(FA materials are useless because of the caliope-type bass, and the master tapes that I have aren't helpful because I cannot hear below 500Hz for comparison!!!)








Link to post
Share on other sites

I would really appreciate some help about my LF hearing problem and the impact on my project.


The LF issue is about the correct choice of building-blocks and not tweaks.   My judgement about hearing below 1kHz is totally useless and the reason why the

project has recently had troubles...   I cannot reliably choose which 3dB/6dB equalizers at 250,200,100 and 50Hz to use.  My hearing is so far gone that I cannot hear a 9dB

difference in these ranges!!


1)  this is not about proving perfect hearing, it is about producing helpful software.

2) I don't care about the (im) perfection of my hearing, I care about the software working to benefit others.

3) my days of being able to enjoy good sound are gone -- wasted away because of recordings with very poor technical quality and my inability to tolerate the dissonant sound of the nonsense sold to consumers.


The decoder can resolve most of the historical quality problems, but has a major stumbling block at these very last stages -- my heairng is gone.  I wont' be able to benefit much from the software myself.


People have gotten frustrated with me about the problematical results, but while I had been improving the complex behavior in the typically more difficult HF ranges, the most difficult problem for me has been in the LF ranges.   I simply cannot hear below 500Hz very reliably.   The feedback of 'sounds good' or 'sounds bad' doesn't give me the direction that I need.


A few tests, probably take no longer than a few hours at most (most likely 15min to 1hr) and 4-5 interactions, with constructive criticsm of the sound -- it will allow completing the project.   With feedback from 2-3 people at this level, the results can be combinedto  finish this last step.


I wouldn't be bringing this up now, except there is no other possible improvement to the technical quality.  (Well, I did envision another kind of modulation distortion improvement -- to go back in the past and scoop out old damage,but why bother now?)   Without my software, most consumer recordings have so much modulation distortion damage that is hidden by the compression that the program can remove!!!


Contact me privately if you want to help.   This will require feedback stronger than 'sounds good' or 'sounds bad', but instead more like 'a bit too much 200Hz bass' or maybe even less precise like 'too little low bass' or 'too much lower midrange'.   Even those kinds of hints, with the small amount of heari g that I have left, will allow this thing to come much closer to being perfect.






Link to post
Share on other sites

Thank goodness -- got some offers of help.   Still open to some ideas.


I am producing a large group of test examples (like demos, but the purpose is technical evaluations).  Tests are from as many genres as can find in my collection (not limited to the Carpenters or ABBA or stuff like that.)


Instead of depending on my hearing (unless there is way too much bass), I did a 'Hail Mary' EQ, where it is what I had original planned, expected it to be.   Honestly, I do NOT know if the bass is strong or weak.   However, some recordings DO come out with strong bass, and then I do a bit of 'mastering' to trim the bass (nothing more than something like -3dB at 20Hz type thing.)


I am hoping for a Friday release with corrected bass.   The highs are BEAUTIFUL -- I got them all time-synced perfectly so that everything fits together very naturally.   I have to make sure that the bass EQ does the correct things for the higher frequencies, but I cannot distinguish much about bass itself.   THIS IS A COMPLICATED THING TO DO.


I am including a .pdf that describes my EQ quandry.....   I know that it is probably meaningless to most people, but this thing is NOT A PLAY-TOY, and is incredibly sophisticated even at the lowest levels.



Link to post
Share on other sites

As I have commented several times before, I have really had troubles developing the correct LF response.   The best that I can do is to think about what the original developer might have been thinking -- that is, read their minds.   Not a very good way of reverse engineering, but might be a good way to start thinking about it.


When doing the EQ, and trying to get rid of 24dB (approx) too much bass, what kind of curve are they using?   When trying to reverse engineer, there are several criiteria:


1) get the levels to match at the joining point between LF and MF sections of EQ.

2) get the right slope.

3) stop the EQ at the right LF frequency.


There are several approaches that one can guess, but every time that I start trying different alternatives, the straight forward 20dB cut at 250 or 500 Hz just do not sound right at all.   These kinds of EQ leave way way too much muddy midrange.

A continuous set of 3dB equalizers at the normal spacing, those also have some troubles.

It appears that the best sound is in the 'in-between' frequencies like 250 and 200Hz, a mixed 6dB and 3dB rolloff seems to sound right.


Also, in all previous attempts, if I didn't use -1.5dB EQ at 1kHz and 750Hz, material like 'Crime of the Century' tends to leave the vocals with an unpleasant sound where the MF and LF aren't joined correctly. 


Of course, I have had a lot of 'false starts' or 'false conclusions', but the EQ is seeming to be very 'regular' looking, like this:


-1.5dB at 1k, 750Hz.

both -3dB and -6dB at 500, 250 and 200Hz each

-3dB at 25Hz

(and some other very LF EQ.)


This is about as simple as it can get.   I checked the spectral energy and compared with other versions, with the results being mostly favorable to the results using this

very simple set of EQ.


Here are the current snippets based on these results....   These were quickly run-off looking at the LF response, and looking for smooth results in the LF/MF, not really focused on the HF -- but HF shoulnd't be too bad:





Link to post
Share on other sites

After getting some good feedback, I think that there is FINALLY a good LF EQ.   I know that these are details that are unimportant in this specific case,

but showing a VERY SMALL part of this crazy multiple year reverse engineering project.   First, I am going to write about a speed/accuracy/quality tradeoff,

and then at the end of this note is the EQ information...


Good news:  I did find that AVX512 versions of the decoder can run 30% faster than the normal AVX2 version.  The bad news is that I also found that the single precision Hilbert transforms that I use for speed reasons (isntead of DP), leave a little bit of distortion in the result.   Since a lot of people have small SSE3, AVX2 machines with 4 cores or less,

always using DP math will make their higher quality decodes run excessively slow (instead of just slow.)  Newer Intel i11 machines will tend to have AVX512, so will work nicely in DP mode and can take advantage of the AVX512 instruction set.


* Important, the 'left over' distortion is still MUCH LESS than in the original recording or in the result with anti MD-distortion fully disabled.


I have decided the following simple change:

AVX2, SSE3 machines use SP math for the Hilbert based distortion cancellation by default

AVX512 machines use DP math for the HIlbert based distortoin cancellation by default.


If you want full DP quality, there will be a --dp switch (likewise, for SP quality on an AVX512 machine, there will be an --sp switch.)  I am pretty sure that the --sp switch name is already used, and perhaps --dp also -- so I'll make up a switch name that doesn't clash.





If you look at previous EQ information, and now look at this,

there are definitely profound differences.   I allowed myself to be more aggressive in the settings because of some confidence built-up from some good,

simple, honest feedback!!!   Here we go, first is the EQ in English, and the following is the C++ source:


Each are 1st order LF shelf (so there is no 'Q')


-1.5dB @ 1000Hz

-1.5dB @ 750Hz

-9dB @ 500Hz

-9dB @ 250Hz

-9dB @ 125Hz

-9dB @ 25Hz


Plus, not shown here, approx +9dB of 80Hz/Q=1.19 2nd order LF shelf.

(The 80Hz is probably intended to be a suppression of the excessive LF gain from DolbyA compression,

because when encoding, they would do -9dB instead of the +9dB that must be done to decode.)


With greater confidence, I felt free to try the stronger -9dB EQ, and it ended up solving the problem.   A -3dB and -6dB filter

in sequence is FAR from the same as a single -9dB filter, so this produces very different, much more full sounding results than

before.  (Yet, the old Carpenters stuff works pretty well also.)


The anti-distortion factor is 20Hz except for the 25Hz EQ, and that is 10Hz instead.


         static constexpr double lfeq1diffb= 25;
         static constexpr double lfeq1diff0= 20;
         static constexpr double lfeq1diff1= 10;

            lfeq1[nlfeq1++].designfilt(1, (40.0 * lfeq1diffb) + lfeq1diff0, da::vm1p5dB);
            lfeq1[nlfeq1++].designfilt(1, (40.0 * lfeq1diffb), da::v1p5dB);
            lfeq1[nlfeq1++].designfilt(1, (40.0 * lfeq1diffb) - lfeq1diff0, da::vm1p5dB);
            lfeq1[nlfeq1++].designfilt(1, (30.0 * lfeq1diffb) + lfeq1diff0, da::vm1p5dB);
            lfeq1[nlfeq1++].designfilt(1, (30.0 * lfeq1diffb), da::v1p5dB);
            lfeq1[nlfeq1++].designfilt(1, (30.0 * lfeq1diffb) - lfeq1diff0, da::vm1p5dB);
            lfeq1[nlfeq1++].designfilt(1, (20.0 * lfeq1diffb) + lfeq1diff0, da::vm9dB);
            lfeq1[nlfeq1++].designfilt(1, (20.0 * lfeq1diffb), da::v9dB);
            lfeq1[nlfeq1++].designfilt(1, (20.0 * lfeq1diffb) - lfeq1diff0, da::vm9dB);
            lfeq1[nlfeq1++].designfilt(1, (10.0 * lfeq1diffb) + lfeq1diff0, da::vm9dB);
            lfeq1[nlfeq1++].designfilt(1, (10.0 * lfeq1diffb), da::v9dB);
            lfeq1[nlfeq1++].designfilt(1, (10.0 * lfeq1diffb) - lfeq1diff0, da::vm9dB);
            lfeq1[nlfeq1++].designfilt(1, (5.0 * lfeq1diffb) + lfeq1diff0, da::vm9dB);
            lfeq1[nlfeq1++].designfilt(1, (5.0 * lfeq1diffb), da::v9dB);
            lfeq1[nlfeq1++].designfilt(1, (5.0 * lfeq1diffb) - lfeq1diff0, da::vm9dB);
            lfeq1[nlfeq1++].designfilt(1, (1.0 * lfeq1diffb) + lfeq1diff1, da::vm9dB);
            lfeq1[nlfeq1++].designfilt(1, (1.0 * lfeq1diffb), da::v9dB);
            lfeq1[nlfeq1++].designfilt(1, (1.0 * lfeq1diffb) - lfeq1diff1, da::vm9dB);


Link to post
Share on other sites

The next decoder release is very close to complete.  I could release the code right now, but I want to look into trimming a dB or so at the lowest freqs.

I am not making release time estimates any more -- but tomorrow night (+24Hrs) might be looking good.


With some help with a correspondent here on the AS forums, I developed more confidence in allowing

more bass in the recordings.  (Much of my worry about too much bass is that I often cannot hear it.)   Kind feedback has given me confidence,

and the state of the demos is almost as much bass and lower midrange as makes sense.   I do expect that a few (at most) 1st order dB might be trimmed off

at 20Hz to 40Hz, but that is the only change that I expect relative to the snippets .  Other than the (hopefully last) LF corrections, there are some more 'features':

The EQ pattern is VERY VERY clean, even though the removal of a bit of 20Hz bass might muck it up a little (just a few EQ of -3dB at 10Hz or 12.5Hz.)


1)  New --dp switch that enables double precision math in critical, but expensive, calculations.   Enabled by default on AVX512 versions of the program.  The default for the AVX2 and SSE3A versions is 'single precision'.  The difference is very small, but noticeable on the higher quality modes like --fz, --fz=opt or --fz=max.  On fast machines, with huge local caches like mine, the difference between --dp=on or --dp=off is minor, but on smaller, normal 4 core machines or 2 core laptions, the difference might be 50% in speed.

2) Minor speed-ups.

3) Really, truly just the --fa swtich, NO SUBMODES ARE NEEDED AT ALL.   In fact, only one submode still works, and it is to disable some LF processing (removes some bass.)  I decided that the variations in recordings resolve back to mastering or the need to master.   The decoder has a whole array of EQ features (1st order, 2nd order, anti-distortion 1st order and anti-distortion 2nd order)...   It is a good thing to learn how to use the EQ  -- esp for differences in bass.  It just seems like different studios/groups produce recordings simply with different bass chracteristics.   When I add submodes for mastering differences, it only becomes a confusion factor.   JUST DO THE EQ -- IT IS TRIVIAL TO DO!!!


There are probably a few more changes, but things are still very similar to what they were in previous releases, EXCEPT SOUNDS BETTER.   The sound is less grainy because the bass joins better with the midrange.  I have also done more careful timing line up between the various sub-bands of the signal.   If stuff doesn't line up, it can cause ugly artifacts.


I'll do the official snippets along with the release.





Link to post
Share on other sites

After the last demos, and since this is immediately before the next release, I just did a very exhaustive 'bisection' method of finally and in detail correcting the LF response.   It is a very painful, detailed and time consuming procedure to do the EQ correctly when there is no objective test criteria or measurement reference source.


When getting very serious, there is a scheme that I use that is based upon 'tells' from material with vocal chorus.   A vocal chorus can easily be damaged if the midrange isn't fairly flat.

So, I chose about 4-5 recordings, and used the choral mix on each one to zero-in on the EQ.   Just doing EQ to 'sound good' doesnt' work.   WHen I compare the previous demo and what I ended up with, there was perhaps 1-2dB more lower midrange in my new results.  A lot of times, I have to bounce back and forth between the recordings until there is a null in the disruptions.


Frustratingly, even 0.5dB error is noticeable on certain recordings in certain sections, and if there is no objective test material, one has to find those 'tough' materials.

Even after doing the 'bisection' approach where hopefully all 4 recordings zero-in on the same place (THEY DID), there will still be errors.   I am simply doing the best that I can do, and thank goodness that I have a moderately sized library of recordings to work with.   One thing that saves the accuracy -- I can depend on the FA equalizer design being simple -- therefore anything that becomes 'complicated' is simply wrong.


The potetially final examples are running right now, and the public demos are already available at the normal 'snippets' location.   My only regret is that relatively more 'flat' (cross checked with orchestral material, which I know super-duper well) loses some vocal enhancement and focus.   However, in the mix, when considering everything, the more complete midrange is definitely more accurate and sounds good in more cases than the 'gouged-out' lower midrange.


Someday, I might consider making  a request for people to send snippets from master tape vs. the distributed FA.   However, master tapes can NOT be distributed under any circumstance, so I will probably defer that request forever.   If I have one GOOD (perhaps maybe two to double check) comparison between master tape and FA, I CAN make the EQ perfect, but the IP rules keep that happening.


I am still double-checking the code, and will be doing so until 1Hr before the release tonight (assuming no impediments, but will no longer promise.)   I'd expect +11Hrs might be a good timeframe to look in the distribution area (I'll announce it soon after uploading.)


Snippets (still might change a little):



I beg everyone -- I do make mistakes, and someday might mistakenly post the full demos instead of snippets.   All the demo stuff is online, but public comparisons need to be in snippet form.   So, please -- if YOU EVER see me publically  post entire recordings -- TELL ME IMMEDIATELY.  I'll correct the situation as fast as possible.






Link to post
Share on other sites

Working on the release, but my hearing either went berserk, or the sound is much more clean than I expect.   It could be one or another.


There is nothing impeding the release in about 6Hrs except for trusting my hearing for testing purposes.   As far as I can tell, the sound is exquisitely clean -- this means that I'd better check the frequency responses and spectrums VERY carefully.   I truly do NOT trust what I am hearing.


Like I implied above -- either the decoder has improved significantly (and I DO know why), or my hearing has become unreliable again.  I *did* rework some EQ and morphed it from a simple, incomplete anti-IMD into the full scheme.  Part  of the clarity & improvement might be related to that.


I am trying not to waste your time with a known bad release, but it is very possible that hte results are better than ever (or better than I thought possible.)  NONE of the demos currently relfect the quality that  I am hearing -> I have been focusing on trying to figure out what is really going on.




Link to post
Share on other sites
2 hours ago, Skip Pack said:

I reviewed them this morning, and I believe they are the best yet. I think your impression is correct.

Thanks -- I'll be careful the rest of the evening, and if things do keep on sounding good, I'll still try for a target of +3Hrs.   If there isn't an announcment by then (or perhaps 10minutes after) , it is because I really heard a bug.

(My hearing goes dead from the time to time, where tonality is incredibly difficult to discern.)


I think that the best thing MIGHT  be to do the release with a caveat -- then tomorrow, do an update if I didn't hear a real mistake this afternoon.

I will wait until about -30minutes before the release time of +3Hrs, then make the decision -- with the strong liklihood that it will happen tonight like I intended.




Link to post
Share on other sites
On 3/16/2021 at 7:59 AM, John Dyson said:

After some work, the EQ modes should reduce to up to 5-6 choices in total, and perhaps fewer.


On 3/20/2021 at 10:58 PM, John Dyson said:

New release:  V2.1.4A

No --fa submodes needed!!!


23 hours ago, John Dyson said:

The EQ pattern is VERY VERY clean, even though the removal of a bit of 20Hz bass might muck it up a little (just a few EQ of -3dB at 10Hz or 12.5Hz.)


23 hours ago, John Dyson said:

3) Really, truly just the --fa swtich, NO SUBMODES ARE NEEDED AT ALL. 


This is really good news!

MQA is dead!

Link to post
Share on other sites

Release V2.1.5B is now ready.  It *should* sound pretty darned good.


Other than the details below, there are numerous micro-level corrections -- too many to enumerate here.  ALL (except the worrisome anti-distortion changes) can only improve the quality.



ADD-ON:  NONE of the current demos match this release.  If you like any improvements in the recent demos, this release should do even better.   I'll make demos tonight. -- probably ready in +12 to +15Hrs.


There  is *experimental* AVX512 support for Windows.   Oddly, the AVX512 binary for Windows is larger than the normal release.  But, on Linux, AVX512 version is smaller.   My guess is that the C++ compiler that I use on Windows might be less advanced, and MIGHT actually produce slower code.   I did check the binary, and it definitely does contain AVX512 code -- so YMMV on the Windows AVX512 binary.


Another 'new' option:  --dp switch.   Normally, the anti-MD code will use single precision math on the SSE/WIN/AVX versions of the program.   If you are willing to spend more time waiting in the higher quality modes (e.g. --fz), then the --dp switch can make the decoding results sound a little more clean.   The AVX512 version of the program uses double precision by default.  The double precision can be reverted to single precision by doing the following:  --dp=off.   On my big machine, there is little or no difference in speed betwen --dp and --dp=off, but on my slower machines there is a speed difference.



* No args to --fa normally needed.   There are a few helper args, but instead I suggest using the --pvdl, pvdh EQ (sometimes --pe.)

* There is a slight caveat that my hearing is a bit unreliable, but I just corrected a bug in the distortion cancellation EQ plus corrected a bug in an important spot.   These kinds of changes do benefit from listening review, but I do have confidence that they are correct.

* I almost totally opened up the bass relative to any of the demos made up to now.   The much more clean HF enabled removing some 20Hz filters and replacing with 12.5Hz filters and still maintaing a sense of balance.

* ANYTHING appears to be directly decodeable except for some Linda Ronstadt stuff.  All you have to do is to add '--pvdh=3k,6' or something similar.  Her recordings will then 'pop'.  (you might need 9dB instead of 6dB -- I forgot, really.)

* One of my more troublesome tests for common recordings -- an original 'For All We Know', now sounds much more natural (modulo the slightly overly strong low bass.)

* Another troublesome test:  Supertrouper (the title song) is as clean as I believe possible.

* Yet another troublesome ABBA test: an original Arrival album is also very clean.

* A major 'windmill' tiling exercise, 'Dreamworld' is coming through better than ever.

* Symphony recordings have a strong sense of balance, instead of the strange lower midrange heaviness that there used to be.



Please watch your speaker cones.   I am not sure if there isn't too much bass.  I do think that it is okay, I used an explicit 9dB rolloff at 12.5Hz, and lots more through other mechanisms.

My hearing is not good right now, and if I get complaints, there will be a new release tomorrow after I fix any significant problems that CAN be fixed.




Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Create New...