Can Picard read DSF extension?

I’m trying a script to identify and tag my dsf SACD rip files and it is not working when I set extension to dsf. It works if I set FLAC so I figured it was the file extension is unrecognized by picard. I also tried %_format % and that didn’t work

$if($and($rsearch(%media%,Hybrid),$eq(%_extension%,dsf)),$set(discsubtitle,SACD))

What I’m trying to do in plain text is
if %sourcemedia% is Hybrid SACD or SACD and %discsubtitle% is empty and extension is DSF set %discsubtitle% to SACD

I don’t think the issue here is the file type, at this level Picard doesn’t care about which file type it is, %_extension% works the same.

But rather it is that you are using file variables in your script defined in Options > Scripting. File variables at best work unreliable here, because the script is executed directly after the data got loaded from MusicBrainz, and in many cases there is not yet a file available at that point.

What I would suggest: Put your script in a separate script in Options > Scripting and run it manually after the files have been matched by selecting them and using “Run Script” in the context menu.

Side note: there was some attempt to make file variables available to general scripting in the Picard 2.0 release, but it got reverted due to some bugs it introduced.

1 Like

it wasn’t working that method either.

So I came up with an okay solution to check the sample rate instead with $gte since DSD files start at 2.8mhz.

My other question is what tag format does dsf files use? Because DISCSUBTITLE works and DiscSubtitle works but not discsubtitle.