foobar x86 2.24.1 / foo_input_sacd 1.5.12 / PCM
First issue:
$info(dsd_bitspersample) and $info(dsd_samplerate) are provided to always have the original values of the source whether a selected SACD track is playing or not.
When a SACD track is played %samplerate% is set to the samplerate which is selected in foobar preferences/tools/sacd/samplerate. $info(bitspersample) however is not changed for the playing track and shows the original value as if the SACD track is not playing and is the same as $info(dsd_bitspersample). This is inconsistent imo.
Second issue:
$info(decoded_bitspersample) is always provided whether an SACD track is playing or not. If a SACD track is not playing however the sample rate that is going to be used when playing the track is not available.
Please make $info(decoded_bitspersample) only available when the SACD track is playing or alternatively publish an extra field $info(decoded_samplerate). I prefer the latter.
Anonymous
I think that:
- $info(dsd_samplerate) should always show DSD rate (eg. 2,8m)
- $info(dsd_bitspersample) always 1bit
- $info(decoded_samplerate) either DSD if played as DSD (or DSD+PCM) or chosen PCM rate if played as PCM
- $info(decoded_bitspersample) either 1bit if played as DSD/DSD+PCM or chosen PCM depth if played as PCM.
PS. channel mask only works for stereo SACDs.
What's about channel mask in v.0.0.13?
udsdv.0.0.13 crashes my foobar. The crashdump says it is udsd. Even if it did not crash - all the previous versions produced stuttering sound and used 100% of processor power so it was unusable to me.
Please implement those commands to input_sacd as this one works well.
Crash dump files, please. It would be nice to know the reason for such crashes.
3 crashes attached. The udsd kind of worked with NullOutput but when changed to ASIO+DSD immediately stalled/freezed and then crashed. All on portable.
Thank you. If v.0.0.14 still crashes, please attach crash files too. When we settle tagging things down, I'll add fixes to foo_input_sacd plugin as well.
a. v0.0.14 did not crash yet.
b. "channel_mask" - works in both 5.1 and in stereo!
c. "WAVEFORMATEXTENSIBLE_CHANNEL_MASK" - does not show anything in stereo but shows "some hex" in 5.1
d. When SACD played as NativeDSD values in JS3 Text Reader show expected 2,8MHz/1bit.
When SACD played as PCM values in JS3 Text Reader show chosen PCM rate and 32fp.
But those values for PCM are not "decoded_values".
Since we now have True Peak Scanner that measures "true bits per sample" and it shows 64fp for SACD I suggest changing your value from 32fp to 64fp to have consistent values.
For now my JS3 displays, ex. 384000 / 32 fp / real bitdepth 64fp.
What I think it should be for "as PCM playback" is:
samplerate/bitdepth: 2,8MHz/1bit
TruePeakScanner: (real bitdepth 64fp)
Decoded_samplerate/decoded_bitspersample" decoded to 384000/64fp.
To sum it up: I think that "samplerate" and "bitspersample" should always show what is in the file (that is 2,8/1 for SACD) but "decoded_samplerate" and "decoded_bitspersample" should change depending on chosen playback mode DSD or PCM.
And now "samplerate" and "bitspersample" show "?" or "blank space" in Columns (DUI) - but only for SACD. Normal PCM file show proper data (16, 24, 32...). Just as if those were now "dynamic" and not static. And they show up in JS3 only when the track is played, should be displayed always like all other PCM files.
It all looks like you have changed the functions: now "samplerate" and "bitspersample" show the "decoded_values" and "dsd_bitspersample" and "dsd_samplerate" show data from the file. I think that what is shown in "dsd_" should be shown in "samplerate"/"bitspersample" and what is shown in "samplerate"/"bitspersample" should be in "decoded_*". Just changing the names of those 4 fields would produce values consistent with other components and all PCM files.
e. The component still uses more resources than input sacd. DST5.1 up to 96%. And when combined with "waveform minibar mod" it stutters very much.
c. As I understand "WAVEFORMATEXTENSIBLE_CHANNEL_MASK" is shown in Properties->Details->Channels table row.
d. In v.0.0.15 "bitspersample" info tag corresponds foobar's audio sample format (which is 64f for [x64] foobar and 32f for [x86] foobar) only for foo_converter plugin. In all other cases it is set to 1. "decoded_..." and "dsd_..." tags are set only when source track is open for decode, but not for info read or write.
c. Properties->Details->Channels always show "2" for stereo and 6 (FL FR...) for 5.1 - maybe that is why "WAVEFORMATEXTENSIBLE_CHANNEL_MASK" only works with 5.1 and shows 0x3F. But that is not a problem since "channel_mask"now works properly both in stereo and 5.1.
d. In my opinion that is correct way with "decoded_..".
But in 0.0.15 (and yesterdays versions) $info(bitspersample) and $info(samplerate) also only work when track is being played - I think that those should always work and show 2,8 and 1 for SACD - as was up until yesterday.
With what is now - in order to display samplerate and bits from SACD in Columns (DUI) and not loose the ability to display such info from all other tracks (PCM) one must use:
$info(bitspersample)$info(dsd_bitspersample) for bits and
$info(samplerate)$info(dsd_samplerate) for samplerate
In all previous versions (before yesterday) $info(bitspersample) and $info(samplerate) was enough for all tracks. Now first part works for PCM only and second one for DSD only. That is not a big problem but just seems quite strange and a little inconvenient.
Anyway - thank you for great plugins and please implement todays features to inputSACD.
I created this ticket.
Now testing with udsd 0.15.
Currently when you select a non playing SACD track decoded_samplerate is undefined, but decoded_bitspersample shows a value of 24, which I find inconsistent.
When a SACD track is playing and selected, both values are shown correct.
What I would like very much IN A FUTURE VERSION is that this component:
1) Leave current behavior of foobar %samplerate%, %bitspersample% and %channels% as is. In other words these values are shown of the current selected track which might not be the track that is playing. So show 2822000, 1, 2/6 for a selected SACD track, whether playing or not.
2) Always publish %dsd_samplerate%, %dsd_bitspersample%, %decoded_samplerate% and %decoded_bitspersample% when a SACD track is played/paused. Also when a normal non SACD track is selected.
These values are part of the audio chain you are actually listening too, and as such have nothing to do with the selected possible not-playing track.
It's ok to always present %dsd_samplerate%, and %dsd_bitspersample% tags, but %decoded_samplerate% and %decoded_bitspersample% make sense to set only when track is actually playing. Because these tags depend on foo_input_udsd plugin output type (DSD or PCM).
I can set them like %dsd_...% tags and change accordingly to output type when track is playing.
I created the ticket.
Thanks for looking into this.
I think what you are saying is exactly what I would like.
I attached two images of my current JS3 script that I adapted to represent current state of foo_input_udsd 0.015 and foo_outinfo 1.2.3.
Green part represents the current audio chain for the playing (selected or not selected) track (SACD in this case), I applied a silly DSP downmix to 1.0 to show things more clearly in the audiochain.
Blue depicts a debugger that show the currently in TF available fields. Tags are from the selected track and from the playing track (can be the same track of course).
First image: White are tags of the current selected playing/paused track (in this case an SACD track).
Second Image: Yellow are tags of the current selected not-playing track (normal flac in this case).
When an SACD track is selected and that track is playing, everything is ok.
What I'm missing in foo_input_udsd 0.015 when a SACD track is playing, but some other track (flac) selected are the following fields of the playing/not-selected SACD track that are required to see what happens in the audiochain:
1) $info(dsd_samplerate), $info(dsd_bitspersample), $info(dsd_channels)
2) $info(decoded_samplerate), $info(decoded_bitspersample), $info(decoded_channels)
I guess $info(decoded_channels) is not needed since foo_input_udsd probably does not change that while decoding, but I do need to see the number of channels before some DSP can mess around with it. So please also provide $info(dsd_channels).
Please change only %samplerate% and %bitspersample% to the previous version - as it always has been in the past - always 2,8MHz and 1bit for SACD - values taken from the files.
The %decoded_...% parameters show proper values in v0.0.15 - please do not change them - they show proper values depending on the output type (PCM or DSD) - don't they?
How is it now in v.0.0.16? Yes, $info(decoded_channels) is not necessary, channel setup is the same for all output types.
0.0.1.6
It is worse now :-)
When a play a SACD track and select a non-SACD track in the playlist even the dsd_samplerate, dsd_bitspersample, decoded_samplerate and decoded_bitspersample are not available.
When a SACD track is playing while a non-SACD track in the playlist is selected I need access to the following fields of the playing SACD track always to display a correct audiochain:
dsd_samplerate
dsd_bitspersample
dsd_channels.
decoded_samplerate
decoded_bitspersample
I attached two screenshots with the same SACD 6 channel track playing with a DSP downmix to 1 channel.
First screenshot has the SACD track selected and all is good.
Second screenshot has a normal track selected and I don't have a clue how the audio chain is constructed :-(
NB. See the blue sections in the screenshots. This section contains the currently TF fields that are available.
So you can see the dsd_ and decoded_ fields are not available when a SACD track is playing but it is not selected in the playlist. They are needed to explain the audiochain.
Please make it so that those fields are always published when a SACD track is playing, even when not selected in the playlist.
BTW. I do not have any issues with %samplerate%, $info(bitspersample), $info(channels) They always represent the info for the selected track (whether SACD or not).
In v. 0.0.16:
%samplerate% and %bitspersample% - still do not work in Columns - show nothing - please revert those two strings to what they always have been - always constant and static and visible in Colums - for SACD should be showing 2,8/1.
What is more %bitspersample% now show 64fp when being played as PCM - that is most incorrect.
The file is still 1 bit and always is 1 bit. Especially that %samplerate% alwyas show 2,8 no matter if played as DSD or PCM. So not only %bitspersample% is wrong when DSD is played as PCM but it is inconsistent with the other value.
Now %samplerate% and %bitspersample% show:
1. nothing in columns - not correct - should be 2,8 and 1 (static values from the files);
2. When DSD in played as DSD it shows (in JS3 panel - meaning dynamic value from the decoder):
%samplerate% - 2,8 - correct
%bitspersample% - 1 - correct
When DSD played as PCM it shows (in JS3 panel - meaning dynamic value from the decoder):
%samplerate% - 2,8 - correct
%bitspersample% - 64fp - not correct correct - should always be 1.
The rest of the fields ("decoded_" and "dsd_" and "channel mask") work properly.
Could you please share your foobar setup? I mean, "Desktop\foobar2000 v2.24.1x64 portable" folder.
It is more than 200MB so maybe it would be better if I can describe you some part of the setup?
To be honest, what I have been asking you for a couple of days is very simple.
I use standard DUI and also "JS3 Text Display".
In standard DUI Columns we have some builtin syntax to display ex. %samplerate% and %bitspersample% and those are "static" (meaning thay do not react do play/pause/stop or anything else) and display values from the files. Ex. mp3 44,1/? (no bitdepth), for "redbook" 44,1/16, for HDCD also 44,1/16 (as it is a redbook file), for SACD 2,8M/1. Those values are constant and should never change...the track is as it is and does not change.
We also have "decoded_..." which will work only in JS3 Text Display (as this one is "dynamic") and work only when the track is being played and I think it should be that way...because the track can be decoded only when it is...decoded (played). And those values in my opinion can change ex. when we play SACD as DSD it shoud be 2,8/1 but when played as PCM it should be "chosen PCM value"/"PCM bitdepth" (maybe 64fp is the best representation- but I do not know this). When we play HDCD it should show 44,1/24 (as hdcd is unfolded to 24 bit).
You have recently introduced "dsd_..." - I do not know what was the intention for those but since you also changed %samplerate% and %bitspersample% (which is unfortunate) I was forced to start to use "dsd_..." in columns just to replace the values that used to be displayed with %samplerate% and %bitspersample% (but now are absent for SACD).
So to be able to display usual values for all files (in DUI Columns) I have to change the "built-in" syntax of ex. %samplerate% to %samplerate%%dsd_samplerate% because the first one does not display values for DSD now (why?) and the second one displays values only for dsd. I can live with it but...why complicate things and why change something that has been working for so many years. So please just change %samplerate% and %bitspersample% so that those display proper values for SACD (always 2,8M/1; no matter if we play, pasue, stop etc...because that should not matter...the SACD file is and always will be 2,8M/1).
The "decoded_.." show proper values in 0.16 version - 2,8/1 when DSD is played as DSD and "PCMvalue"/"PCMvalue" when played as PCM (still talking about SACD file but played as PCM). And they do not show anything when not played...which is also correct...because nothing is being decoded then. So do not change "decode..." - those two work great.
I understand that someone wants to see some strange and seemingly not useful (just my opinion) values like "what would the file be decoded to if it was to be decoded even if it is not decoded now" or something even strangier (and I am under the strongest impression that that person always plays DSD as PCM so he/she does not seem to see that the "decoded.." values might change and show different thing to different people in different setups). And I do not have anything against it...provided such things do not destroy normal and proper display of common values. Such additional properties should be displayed with additional syntax (ex. component exclusive and with different naming) (maybe the "dsd..." ones were meant for this? - that I do not know). The usual and widely used "Strings" should remain unchanged and understandable to common user.
So please change the %samplerate% and %bitspersample% to be static (like read from the file or tag...just like the codec or track lenght or title - those do not change if we play or stop them - those are just technical info of the files) and not changeable and being always displayed in columns.
If you need some of my setup description or chosen files - do not hesitate to ask (but more than 200MB looks too much for me).
And please explain what is the intended purpose of "dsd..." strings.
Sorry for such a long post but it seemed a very simple case but started to live its own life and seems to get more and more complicated.
Can you reply with the JS3 (and displays incorrect values) you use attached?
I attached the current script I am using which does not give me any issues with %samplerate%, %__bitspersample% and %__channels% whether playing/not-playing, whether SACD/non-SACD.
Original ticket creator here.
Lot of confusion here.
I use CUI. And UDSD 0.0.16.
A selected SACD track always displays correct values for %samplerate%, %__bitspersample and %__channels%. That is valid also when the track is playing. And it does not matter whether UDSD outputs PCM or DSD or DSD+PCM.
This has nothing to do with JS3 textdisplay either. Those tags are also valid and available in other components like ELP, PSS etcetera.
So there is nothing wrong with UDSD 0.0.16 regarding these fields on CUI. DUI I don't use and dont't know if there's a problem with these fields in DUI.
That is the easy part.
Second part is where my issues are.
The moment a SACD track is played (or paused) I want access to it's original samplerate, original bitspersample and original channels.
Of course these are available in the form of %samplerate%, %__bitspersample, and %__channels%, but ONLY when the playing SACD track is also selected. When you select something else than the playing SACD track the %samplerate%, %__bitspersample and %__channels% of that particular file are published in foobar and that is exactly how it should be.
However I want also the original values of the playing (but not selected) SACD track,
therefore I need %__dsd_samplerate%, %__dsd_bitspersample% and %__dsd_channels%.
I'm pretty sure that in an older version of UDSD that was the case.
Last part of this puzzle is that I want to know what the UDSD component does with the playing original SACD file when it delivers it to the next phase in the audio chain just before replaygain and dsp's do their work. Those values should be and are currently published in %__decoded_samplerate% and %__decoded_bitspersample%, but ONLY when the playing SACD track is selected.
Current status how UDSD 0.0.16 works summarized:
1) Completely correct when a SACD track is selected and not playing
2) Completely correct when a SACD track is playing and selected
3) Incomplete when a SACD track is playing and not selected, because %__dsd_% and %__decoded_% are not made available for this playing SACD track. This is the only thing that needs to be changed.
Everything works for me except for point 3.
I also attached a picture with a selected & playing SACD track that outputs in DSD in which you can clearly see that:
%samplerate%, %__bitspersample and %__channels%
%__dsd_samplerate%, %__dsd_bitspersample% and %__dsd_channels%
%__decoded_samplerate% and %__decoded_bitspersample%
all have correct values.
It turns out that probably %samplerate% and %bitspersample% works for DSF files but stopped working for SACD.iso (or never did in udsd). Most of my DSD are SACD.iso and I use "sascd_input" - there %samplerate% and %bitspersample% always worked. When I started to test udsd on my second (portable) foobar...the 2,8/1 disappeared. I checked file info and DSF files have different "tags" than sacd.iso. Maybe that is the cause.
@manisiutkin
I have cleared everything, uninstalled and installed again and now in v. 0.0.16 - almost everything works fine.
Just one thing - when DSD is played as PCM $info(bitsperample) shows 64 instead of 1. That is not the "dsd_bitspersample" nor "decoded_bitspersample" but normal "bitspersmple". It should always show 1 no matter if DSD is played as DSD or as PCM. If I stop the DSD track it shows 1 so it probably behaves a little like "decoded".
The rest work fine.
As a side note: $info(decoded_channels) and $info(dsd_channels) show nothing - they probably do not exist?
I have to apologise for making such a mess in this converstion and making trouble to you but that was not intentional and most of my problems disappeared after reinstalling of foobar and udsd component.
Please see to the strange $info(bitsperample) behaviour and also update inputsacd as that one consumes much less resources.
Another strange thing in udsd0.016 - when DSD files are scanned with TruePeakScanner they show 32fp (or once even 28) bit as TrueBidepth. The same files scanned but when input_sacd is installed (and udsd uninstalled) always show 64fp.
Plus what do: Disc read-ahead sectors and Max output version mean and do?
I attached two screenshots.
What is shown on those pictures:
I. The DSD track is played as PCM384 with udsd0.16.
II. Builtin DUI is on the left with columns named to precise what they should show - all is ok.
III. JS Panel is on the right and shows all commands.
a. It is divided to 5 stages:
1. input - that should show technical info from the file,
2. scanned bitdepth - infor from TruePeakScnanner (and hdcd),
3. decoded - info from "decoded_",
4. dsd - info from "dsd_",
5. output - infor from "output component",
b. All stages include the "same commands" but read from corresponding "place" of audio chain (names od commands are written before the displayed values)
screen 1. "dsd played as pcm; scanned with inputsacd.png" - it shows 64 in $info(bitsperample) (first stage) - which is wrong because the file is 1bit not 64; this one has been sacnned earlier by TruePeakScanner while inputsacd was installed and it shows 64fp as TruePeakScanner.
scereen 2. "dsd played as pcm; scanned with udsd.png" - it shows 64 in $info(bitsperample) (first stage) - which is wrong because the file is 1bit not 64; and it shows 32fp as TruePeakScanner - it is probably also "wrong" as foobar can work in 64bit and the decoded shows 64bit. This one has been sacnned by TruePeakScanner while udsd0.16 was installed -I presume that this is caused by your (authors) design...but maybe that is the purpose of udsd consuming much more resources than inputsacd. Input uses 64bits and udsd uses32bits for "distributing the signal" (just my amateur language and thoughts). Just a thought.
I also have put other "values" to all of the 5 stages and we see that some are missing - it would be nice to have them all even if they would show the same things. Those are "decoded channels", "decoded channelmask", "dsd channels", "dsd channel mask".
**So what is still working wrong in udsd0.16 is: $info(bitsperample) showing 64 instead of 1 when DSD is played as PCM. **
But the value is right in DUI columns (showing 1 on the left side of the screen). And also note that "samplerate" is proper both in Columns and in JSPanel and shows 2,8MHz.
Additional 4 values/features would be apreciated too ("decoded channels", "decoded channelmask", "dsd channels", "dsd channel mask").
Updating inputsacd is very much awaited because of resources and stability.
Maybe changing udsd signal from 32bits to 64bits (like it already is in inputsacd) would also help and reduce the need for resources?