Zeugma440 / atldotnet

Fully managed, portable and easy-to-use C# library to read and edit audio data and metadata (tags) from various audio formats, playlists and CUE sheets
MIT License
459 stars 61 forks source link

wav tag editing questions #165

Closed mikeatdjp closed 1 year ago

mikeatdjp commented 2 years ago

The problem

I am testing a wav reader and writer and using ATL to edit my test files but i am afraid I am not using it properly because I lose some of my id3 tags and if the id3 chunk ends up with an odd size ATL doesn't add the padding byte.

Environment

Windows 10 ATL 4.10.0

Details

I create a new track(filename) and then just set description with track.Description = "something" and then track.Save(). The file is now missing 5 serato id3 tags. It still has serato beatgrid and SERATO_PLAYCOUNT but is missing Serato OVerview, Analysis, Autotags, Markers and Markers2, and incidentally i noticed now my id3 tag has an odd length yet ATL did not add the padding byte according to RIFF spec used in wav format.

I see Description in the id3tag, so it is successful. But it was also added to the file as a new RIFF bext chunk, which is fine. I just don't know how to preserve my id3 tag.

What can I do?

Code To Reproduce Issue [ Good To Have ]

Zeugma440 commented 2 years ago

Hello Mike,

Thanks for your feedback !

The missing padding byte is definitely an issue, as I do see what you're referring to in the spec.

However, to investigate the missing Serato fields, I'd need a sample file to work with. Could you please send it through a 3rd party sharing platform (e.g. wetransfer, mega...) to my e-mail address ([at]mail.com) ?

Thanks in advance,

-Z440

mikeatdjp commented 1 year ago

Hi Z440, Thanks for your response. I can attach a couple files here. They are small because i trimmed a real wav file of the audio data. It only has 4 bytes of audio but the meta is real untouched bytes from mp3tag and Serato.

I make a new Track("CD Track 01.wav") and set track.Description = "something" and then track.Save() and i get the edited version. LMK if you can see what I mean.

Mike H. digitaldjpool.com

On Wed, Oct 5, 2022 at 6:41 AM Zeugma440 @.***> wrote:

Hello Mike,

Thanks for your feedback !

The missing padding byte is definitely an issue, as I do see what you're referring to in the spec.

However, to investigate the missing Serato fields, I'd need a sample file to work with. Could you please send it through a 3rd party sharing platform (e.g. wetransfer, mega...) to my e-mail address ([at]mail.com) ?

Thanks in advance,

-Z440

— Reply to this email directly, view it on GitHub https://github.com/Zeugma440/atldotnet/issues/165#issuecomment-1268260672, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHWFYLFBEF4ZA3O2ATULJW3WBVLPHANCNFSM6AAAAAAQ47S5RI . You are receiving this because you authored the thread.Message ID: @.***>

Zeugma440 commented 1 year ago

Sure, go ahead ! If there's no actual audio data, we won't have any size nor copyright issues :-)

mikeatdjp commented 1 year ago

Files.zip

I attached a Files.zip with 2 wavs. The one CD Track 01.wav that I edit with ATL to get the second one, CD Track 01.wav.editted.wav.

Zeugma440 commented 1 year ago

Thanks Mike.

Part of your issue comes from the fact that many Serato metadata are saved as a GEOB objects inside the ID3v2 tag. Even though they are part of the standard, it's the first time I've encountered such fields, so I've adjusted the library to be compatible with them 👍

That damn padding byte is the next to go. I'll keep you informed.

Zeugma440 commented 1 year ago

Fix has been pushed to the repo. It will be made available with the upcoming release once other pending issues are fixed.

Zeugma440 commented 1 year ago

Available in today's v4.12

mikeatdjp commented 1 year ago

Thank you!

By the way, I also happened to notice that aiff files have this same requirement for chunks length padded to an even number of bytes. I don't know if you use the same parser for aiff that you do for wav but that's how I happened across it. Does you library handle aiff files the same way?

Zeugma440 commented 1 year ago

@mikeatdjp AIFF files are handled with a different code, so if there's an improvement to be made, it will need another fix.

I'll take a look at the specs and get back to you.

Zeugma440 commented 1 year ago

You were right + AIFF has just been adjusted to properly handle padding. Thanks for your precious feedback !

Zeugma440 commented 1 year ago

The fix for AIFF is available on today's v4.14