Skip to content

Releases: Zeugma440/atldotnet

Version 4.13

25 Oct 06:09
Compare
Choose a tag to compare

Changed

  • MP4/M4A : Track timescales are preserved after editing
  • MP4/M4A : New chapter track timescale is now 1000 instead of 44100

Fixed

  • MP4/M4A : Better management of TRACK.TREF atom when removing and adding chapters back
  • MP4/M4A : Only use samples from audio track to detect bitrate

Binaries are available from nuGet

Version 4.12

16 Oct 06:48
Compare
Choose a tag to compare

New

  • 8 new standard fields are now available
    • Album sort order
    • Album artist sort order
    • Artist sort order
    • Title sort order
    • Content group description
    • Series title / Movement name
    • Series part / Movement index
    • Long description (also known as "Podcast description")
  • ID3v2 : Support for the GEOB frame (see https://github.com/Zeugma440/atldotnet/wiki/Focus-on-non-standard-fields)

Changed

  • ID3v2 : the TIT1 frame is not mapped to Track.Description anymore, but to the new Track.Group

Fixed

  • MP4/M4A : Issues when removing metadata from the file
  • WAV : Better compliance with word-aligned chunk size (the infamous padding byte located at the end of each chunk)

Binaries are available from nuGet

Version 4.11

10 Oct 14:06
Compare
Choose a tag to compare

Interface breaker

  • Progress feedback arguments are now passed to action methods (i.e. Save and Remove) instead of Track's constructor

New

Changed

  • MP4/M4A : New chapter data is now added to an existing mdat atom instead of creating a brand new mdat atom at the end of the file

Fixed

  • MP4/M4A : Prevent chapter data from staying in the file after removal in certain circumstances (kudos to @CooPzZ for his patience)

Binaries are available from nuGet

Version 4.10

20 Sep 19:06
Compare
Choose a tag to compare

Interface breakers

  • Write progress feedback is now reported on the calling thread using Action<float> instead of IProgress<float>

Changed

Fixed

  • MP4/M4A : Using Remove now properly strips the file from metadata instead of messing it up
  • MP4/M4A : Fine-tune roundings to fix last chapter image not being visible when last chapter has certain durations
  • MP4/M4A : Many fixes to chapters and chapter pictures management

Big thanks to @CooPzZ for his precious help on these improvements !

Binaries are available from nuGet

Version 4.09

15 Jul 20:06
Compare
Choose a tag to compare

Changed

  • M4A/MP4 : Write Description using desc instead of ©des
  • Priorize Date over Year when writing to a RECORDING_DATE_OR_YEAR field

Fixed : Make date format culture-proof

Binaries are available from nuGet

Version 4.08

12 Jun 16:05
Compare
Choose a tag to compare

Fixed

  • MP4/M4A : Atoms with invalid size header that makes them larger than the file are now read
  • MP4/M4A : Look for UDTA atom inside TRAK atoms if not found as a direct child of MOOV
  • MP4/M4A : Description metadata now uses the correct field identifier ©des

Binaries are available from nuGet

Version 4.07

25 May 16:36
Compare
Choose a tag to compare

New

  • MP4/M4A : Chapter pictures are now supported

Fixes

  • MP4/M4A : Chapters track is now properly detected even when located before the audio track
  • MP4/M4A : Integer values from AdditionalFields are now written with the correct endianness

Technical

  • The library is compatible again with projects set up with Invariant globalization (<InvariantGlobalization>true</InvariantGlobalization>)

Thanks to @sandreas for his precious contribution !

Binaries are available from nuGet

Version 4.06

21 May 13:42
Compare
Choose a tag to compare

New

  • Cuesheets : The encoding used by CUE files is now automatically detected
  • Playlists : Support for DPL (Daum PotPlayer) playlists

Changed

  • APE : Metadata is now read using Settings.DefaultTextEncoding (default : UTF-8) instead of hardcoded UTF-8, as the latter is recommended, not mandatory

Fixed

  • When a file is already opened by another app, ATL now raises an exception if you try to update it

Technical

  • ATL now includes the C# UDE Port library
  • Any exception logged by within ATL is now logged with its InnerException

Thanks to @melinyi for the comprehensive feedback !

Binaries are available from nuGet

Version 4.05

18 May 07:10
Compare
Choose a tag to compare

APE, Vorbis, WMA : Support for unsynchronized lyrics using Track.Lyrics.UnsynchronizedLyrics

Binaries are available from nuGet

Version 4.04

09 Apr 18:27
Compare
Choose a tag to compare

Breaking changes

  • Major overhaul of TagData and related classes to streamline and simplify some parts of the library
    • You won't have any impact if you just use the Track class

    • If you were using TagData, please use TagHolder instead and mind the following :

      • Some fields have been renamed to align with the rest of the library
        • Rating -> Popularity
        • Pictures -> EmbeddedPictures
      • Some fields have been merged to align with the rest of the library
        • Recording<xxx> -> Date
        • TrackNumberTotal and TrackTotal -> TrackTotal
        • DiscNumberTotal and DiscTotal -> DiscTotal
      • Public type of the "Additional fields" field has been simplified and is now a IDictionary<string, string>
      • Numeral and date fields are now typed instead of being plain strings
      • Last but not least, as collections (EmbeddedPictures, AdditionalFields and Chapters) are deep-copied upon access, they can't be edited on the fly anymore. You'll have to edit a temporary collection and feed it to TagHolder
      // Old code (won't work anymore)
      TagData tag = new TagData();
      tag.Pictures = new List<PictureInfo>();
      PictureInfo pic1 = PictureInfo.fromBinaryData(/*...*/, PIC_TYPE.Unsupported, tagType, 0x01);
      tag.Pictures.Add(pic1);
      PictureInfo pic2 = PictureInfo.fromBinaryData(/*...*/, PIC_TYPE.Unsupported, tagType, 0x02);
      tag.Pictures.Add(pic2);
      // New code
      TagHolder holder = new TagHolder(); // Now use TagHolder instead of TagData
      // Note that you don't have to worry about holder.Pictures not being initialized anymore
      IList<PictureInfo> testPictureInfos = new List<PictureInfo>(); // Use a local temporary collection
      PictureInfo pic1 = PictureInfo.fromBinaryData(/*...*/, PIC_TYPE.Unsupported, tagType, 0x01); // That part hasn't changed
      testPictureInfos.Add(pic1);
      PictureInfo pic2 = PictureInfo.fromBinaryData(/*...*/, PIC_TYPE.Unsupported, tagType, 0x02);
      testPictureInfos.Add(pic2);
      holder.EmbeddedPictures = testPictureInfos; // Feed the temporary collection to the TagHolder
  • The subset of IMetaDataIO with the properties has been extracted and called IMetaData
  • The IMetaData.Track field name has been renamed to TrackNumber and IMetaData.Disc has been renamed to DiscNumber to align with the naming of the Track class and the old TagData class
  • Most helper classes are now internal to the library - for instance, you can't directly call StreamUtils or WavHelper anymore (don't know why you would in the first place...)

New

  • OGG : Support for reading embedded FLAC
  • OGG : ATL now properly reads multiplexed OGG files (e.g. Vorbis + Theora) and processes the audio part only
  • M4A/MP4 : Support for Publisher and Publishing date fields
  • M4A/MP4 : Support for alternate @des code for the General description field
  • New standard field to Track and IMetaData : Product ID
  • New feature : date values in AdditionalFields can be auto-formatted when prefixing them with MetaDataHolder.DATETIME_PREFIX. That feature can be turned off with Settings.AutoFormatAdditionalDates

Changed

The PictureTokens field is now deprecated as it is a remain from the era where ATL didn't support embedded images directly. This field will be removed on the next major udpate.

Fixed

WAV LIST INFO chunk now properly supports Recording Date, Genre, Popularity and Track number

Technical

Fixed unit tests for Linux and Unix-based systems (thanks to @sandreas)

Binaries are available from nuGet