Deffy converts .DFF files (either containing DSD or DST) to .DSF files or converts .DSF files to .DFF files.
Deffy can also:
o Split .DFF files (DSD and DST - uncompressed and compressed) into separate tracks (manually or with a cue sheet).
o Split .DSF files into separate tracks (manually or with a cue sheet).
o Glue separate .DFF files together, into one file.
o Strip a .DFF file from its compression (keep it a .DFF file but turn the DST into DSD).
o Reverse the channels in two channel .DFF files.
o Show the title / artist fields in a DFF (when present).
o Show the comments in a DFF (when present).
o Flip a DSF file from 8-bit per sample to 1-bit per sample and v.v.
o Validate DSF files with logging.
None of this functionality involves PCM steps.
Deffy is freeware for Windows 10 and 11, fully functional, and does not contain adware, spyware or other nuisances. However do note that the licence agreement excludes the use of Deffy for commercial purposes.
About converting DFF to DSF
The conversion is lossless (no PCM steps involved).
Any metadata in the .DFF file is copied directly to the .DSF file.
About converting DSF to DFF
The conversion is lossless (no PCM steps involved).
Any metadata in the .DSF file is copied directly to the .DFF file.
Why?
A bit annoyed by the lack of conversion software for these file types (either not working on DSD but translating to PCM and back, or not working on DST, or asking money for what's really a very simple conversion) as per usual I decided to build it myself (and spread the love for free).
A very short explanation as to what DSD / DST / DFF / DSF means:
Direct Stream Digital (DSD) comes in two flavors (when limiting it to files on a computer): .DFF (Philips) or .DSF (Sony). The Philips files contain either DSD or DST (Direct Stream Transfer - lossless compressed DSD... so note that this is still DSD). The Sony files (.DSF) always contain DSD (uncompressed). You see how they're rather similar. If a Philips file is uncompressed it's almost a Sony file! The data is arranged a bit differently and the headers in the files differ a bit, but the bytes that make up the music are exactly the same (just mixed up differently). Music players that can handle DSD usually can play both file types (.DFF and .DSF).
To recap:
.DFF = Philips file type.
.DSF = Sony file type.
DSD content is in both.
If DSD is compressed (only in the Philips file) it's called DST.
The Sony files do not do compression.
Metadata?
Now why would you prefer Sony files over Philips files? The Philips files do have the advantage (if they contain compressed DSD they're a lot smaller): the answer is that you can't store metadata in a .DFF file. You can in a .DSF file
(aaah... but is this actually true or is this some vague digital urban legend?).
Actually... this metadata-problem isn't the .DFF file itself, because it's not difficult to glue a metadata (ID3) chunk to the end of it (or insert it somewhere in the middle), even if it's not in the official specs. DFF allows non-compliant chunks to be added to the file. So it's not the storing or the writing: it's the reading. The programs out there don't seem to want to read it (probably because then they also have to write it). Which is a shame, cause the compressed .DFF files are usually around 50% smaller (compared to their bloated .DSF cousins). Then again... I believe DST only works for DSD64
(no it doesn't... I recently got my hands on some software that can compress DSD to DST, and a DSD128 compressed fine - extremely slow, but more than 50% compression) so if you have higher resolution files, the advantage of compression drops away
(not true, it only becomes more interesting...).
So from a user perspective it's true: you can't find easy software to edit metadata in a .DFF file (or add it). And even if you could, there's not many useable programs out there for archiving or playing the files (programs which actually read the metadata), apart from Foobar. But from a technical point of view it's not true: you can write metadata to a .DFF file (text, images, the whole ID3 spec). No problem. They play just as fine with that extra chunk.
So where does that leave Deffy? Well simple: if Deffy encounters an ID3 metadata chunk in the .DFF file, the chunk is copied as a whole to the end of the .DSF file (where it belongs, according to the DSF specs), so it's readable and doesn't get lost (and yes, in my experience with .DFF files I experimented with, when building Deffy, they all had metadata embedded).
Since version 4.0.0 of Deffy, you can also convert .DSF files to .DFF files and similar applies: ID3 metadata is copied as a whole from the .DSF file to the .DFF file.
About splitting DFF or DSF files
Well, that was a bit of a similar story: I ran into a huge .DFF file (with a cue sheet), that played fine in Foobar, but was impossible to break into separate tracks. When searching for software I didn't get far: paid options, software with too many options, complicated conversions via PCM and back... come on, it's just a split, how difficult can it be! So again I decided to try myself. An attempt that also led to the discovery of some pretty embarrassing bugs in Deffy (as a result you got version 1.1.4 and version 1.1.5, when the splitting wasn't finished yet), not my finest hour.
However, splitting was the objective, so now, since version 2.0.0, you can split .DFF files into separate tracks. Mind you, it is all still a bit experimental. The .DFF split is not really complicated (well, splitting compressed .DFF files wasn't a peach to get right), but I have little material to experiment with (especially the format of the cue sheet might present problems).
For an explanation on how to split, see
here.
Deffy can split .DFF files that contain DSD (uncompressed) or DST (compressed DSD). Since version 4.0.0 Deffy can also split .DSF files. If you split a compressed .DFF files, the resulting .DFF pieces will also be compressed and contain DST. The shortest piece you can create (time wise) is 1 second. I could have gone smaller, as short as 1/75 second, which is the minimum possible length of a .DFF file, but that seemed a bit silly, so I capped it to 1 second. If the .DFF file or .DSF file that is split contains an ID3 chunk, the chunk will be copied to all the separate pieces.
Note though that Deffy does not read the ID3 information. If you split without a cue sheet, and the Title / Artist fields are filled in by Deffy, when the Split window opens, that is information taken from the official .DFF DIIN chunk (and within that one the DIAR and DITI chunks). If those chunks do not exist in the .DFF, the Title / Artist edits will be left empty in the Split window (even if the .DFF file contains an ID3 chunk) and you will have to fill them in yourself. This is even more true for a .DSF file that you want to split, since those files do not have separate Title / Artist fields embedded. Deffy does not create an ID3 chunk in the split pieces if there was no ID3 chunk in the original file that was split. This means if you fill in the edits yourself, you might not see that information back in other programs (and in split .DSF files these fields are only used for the filename of the separate tracks).
After splitting and if all goes to plan, you end up with the tracks you requested: all full blown .DFF files (or .DSF files), with exactly the same bytes as the ones in the big original (no conversion steps to PCM - even compressed DFF files stay compressed). Much like taking a scissors and cutting the big file into pieces. The process is basically just that. It involves some calculations into the music bytes (to resolve the time stamps and get to the right location within the music) and writing the right headers per track, so that they're all individually recognized as .DFF file or .DSF file.
As written before: I have very little material to experiment with where the splitting is concerned (enough .DFF files, but hardly any cue sheets). If you run into trouble on the cue sheet reading, you can send it to me
here on ememsoftware@gmail.com, and I'll try to fix Deffy so that it can read your cue sheet properly (provided it complies to some basic standards).
About glueing DFF files
Okay, this one was just for fun. I honestly don't see a big use for glueing, but well, after the splitting I realized glueing was also a possibility. It's not a very complicated process, but there are a few catches and considerations: the files need to have similar properties. You can't glue DSD (uncompressed) together with DST (compressed - unless you use the 'Stripping' option and remove the compression first, see next paragraph). Nor can the samplerate differ (e.g. DSD64 can not be glued to a DSD128), or the number of channels (2 channels can't glue to 4 channels). Only if those properties are all similar, glueing is a go.
Be aware though that not all seams can be glued satisfactory. If the separate pieces don't end in silence or the glued on part doesn't start with silence (and even then), you might hear artifacts like plops or clicks (most of the time really faint, but still noticable). This has very much to do with the nature of the 1-bit sampling and is not something I can fix. It works perfectly when the tracks belonged together previously (glueing back split pieces that were once one bigger piece), but otherwise it's a bit of a gamble and your dff mix-tape might sound ploppy on some seams.
For an explanation on how to glue, see
here.
After glueing and if all goes to plan, you end up with the separate files all glued together in one new file, with exactly the same music bytes as the ones in the smaller pieces (no conversion steps to PCM).
Currently glueing is not implemented for .DSF files.
About stripping DFF files
That's how this works: one thing leads to another. Because glueing is cool and all, but what if you really want to glue a DST .DFF file (compressed) together with a DSD .DFF file (not compressed)? Can't be done if the compressed file doesn't change. It's only possible if you remove the compression from the DST file and turn it into DSD (an uncompressed .DFF file). Of course, another option would be to implement all this functionality also for .DSF files. Well, since version 4.0.0 of Deffy I'm getting close. In the meantime it was easier to implement what I call 'stripping': remove the compression and turn a DST .DFF file into a DSD .DFF file.
The procedure in Deffy is simple: blue select your compressed .DFF file(s) after loading them and click the 'Strip selected files' button (in fact you can also select uncompressed files with it... they will be skipped automatically). The original won't be overwritten. You will get a new .DFF file with '_DSD' added to the file name. Deffy writes the stripped .DFF files to the same directory as the original (in a subdirectory called 'Stripped') or will ask you where to write them, depending on a setting that can be changed through 'Settings...'.
Be aware: removal of compression is not reversable. Your original compressed .DFF file will not be touched by Deffy and will remain compressed, but if you delete that original, the uncompressed .DFF file can not be compressed again (at least not by Deffy - currently).
About reversing channels in two channel .DFF files
Not sure if anyone is ever going to need this one, but since we can I thought it was nice to also do. However, Deffy can, but only on DSD files (uncompressed) and only if the file contains two channels (not more). Reversing channels on DST (compressed DSD) seems impossible
(I haven't actually tried, but since gaining some more knowledge about DST, I learned that the music bytes are not in fact compressed as one big block... the compression is channel based. So even reversing compressed data should be possible? I'll give it a try soon...). If you do feel the urgent need to reverse channels on a compressed .DFF file, you can first strip the file of its compression (see previous paragraph about stripping).
The procedure in Deffy to reverse channels: blue select your uncompressed .DFF file(s) after loading them and click the 'Reverse channels' button (in fact you can also select compressed files with it... they will be skipped automatically). The original won't be overwritten. You will get a new .DFF file with '_RC' added to the file name (Reversed Channels). Deffy writes the reversed .DFF files to the same directory as the original (in a subdirectory called 'Reversed') or will ask you where to write them, depending on a setting that can be changed through 'Settings...'. Contrary to the stripping (see previous paragraph), reversed files can be reversed back. If you reverse a reversed file, you will end up with the orginal (the left and right channels where they were originally).
Currently reversing channels is not implemented for .DSF files.
About flipping a 1-bit DSF to 8-bits DSF or v.v.
DSF files have a specific setting that tells your DAC how to read the music bytes. Sony had a bad day when they named this setting '1-bit per sample' or '8-bits per sample'. Which is rather confusing, because DSD is always 1-bit per sample. 8-bits per sample just doesn't make any sense in DSD. This setting actually tells your DAC how the music bytes and their bits should be read: from left to right (1-bit setting) or from right to left (8-bits setting).
Deffy normally writes DSF files with the 8-bits setting, because that's the fastest when converting from DFF (the DFF bytes are read from right to left, so when transferring the music bytes, Deffy can just write them as they are... with the 1-bit setting every byte needs to be reversed). However, since I do not know for sure if every DAC out there knows how to deal with these two settings, I've added the option to write 1-bit DSF, since version 4.5 (see Settings). Then I realised it might also be interesting if you can flip an existing DSF from one setting to the other, hence this new option (since version 4.6) for DSF files (DFF files do not have this choice).
Advise is to not use this option if your hardware does not have problems with your current DSF files (or with the files Deffy produces). Try flipping (or change the conversion to 1-bit via Settings) only if conversions on the default setting do not work out or if you have DSF files that just won't play properly. When a DAC thinks an 8-bit file is a 1-bit file (or v.v.) and reads the bytes the wrong way, you'd typically still be able to make out the music, but it will be covered under a layer of very obvious hissing.
The procedure in Deffy to flip a DSF: blue select your .DSF file(s) after loading them and click the 'Flip bytes of selected files...' button. First you will see a short explanation asking if you want to proceed. If you click 'Yes', the original file won't be overwritten. You will get a new .DSF file with '_TO8' or '_TO1' added to the file name (from 1 TO 8 or from 8 TO 1). Deffy writes the .DSF files to the same directory as the original (in a subdirectory called 'Flipped') or will ask you where to write them, depending on a setting that can be changed through 'Settings...'.
Is Deffy free? Yes! And what are the limitations?
Deffy is free (without adware, spyware, reduced functionality, inserted silence or other nuisances... seriously... fully functional and totally free!). However do note that the licence agreement excludes the use of Deffy for commercial purposes.
Multichannel
Deffy was mainly tested with stereo (2 channel) files. I did run a few multichannel DFF files to test, but I have no way of playing the resulting DSF files back (the way they are meant to be played back: in a mulitchannel setup). So no guarantees if you go beyond 2 channels. The multichannel files I tested did play fine when played back in stereo.
Edit Master
I didn't bother at all to test an Edit Master. Basically you can create such a .DFF when you rip a SACD (or SACD-ISO) as a whole. It's one .DFF file that contains the complete content of the SACD.
Most likely (almost certainly) Deffy will not work with those (either crash, stall, freeze or produce garbage).
Edit: in the meantime I did try, and much to my surprise, Deffy converted the file without problems. You end up with one big .DSF file that contains all tracks. I don't see the value in it, but well... nice to know it works, without me having to put in extra effort...
Speed
Speedwise the conversion of uncompressed DSD is very fast, but converting (or stripping) compressed DSD (DST) isn't. There's some parallel processing going on in Deffy via multiple threads (a maximum of 10 files processed simultaniously), but unpacking DST isn't the fastest.
What if I regret my conversion?
Well, that's a funny one. Deffy doesn't destroy your original .DFF file, just writes a new .DSF file. And although Deffy can also do .DSF to .DFF (since version 4.0.0) - so Deffy can get your .DFF file back if you throw away your original .DFF file after the conversion -
be aware: the compression algorithm I'm using is one way (it can only decode, not encode). Quite recently I did bump into the compression code for encoding, hinting at the possiblity I could make Deffy two way. However, till that day comes, the short of it:
don't throw away your compressed .DFF files... Deffy can not produce compressed .DFF files, not yet anyway... (for uncompressed files it really doesn't matter).
In general: this software comes without guarantees. Holding on to your .DFF files (or .DSF files) until you've at least listened to the conversions (and made sure they're okay) is always the smarter thing to do. Also keep in mind that new software usually needs to go through a few iterations to get the more serious bugs out.