Skip to content

4. FAQ (Frequently Asked Questions)

Zeugma440 edited this page Aug 18, 2023 · 22 revisions

Integration

OK, I've downloaded the library. Now what ? Where do I start ?

I'm not interested in contributing to ATL and I need the XXX feature for my app. When will the XXX feature be implemented ?

Is there any way to see ATL in action on a specific music collection before integrating the library ?

Development

What are Dummy classes used for ?

There's something wrong with the library but I have no useful output on the Console. Why so ?

Really, some sections of the code could be better if XXX

Misc.

Help ! I don't know anything about programming, I just want to read XXX data from my audio files and write it into a list

Is there a way to make ATL write ID3v2.2 tags instead of ID3v2.3 or ID3v2.4 ?

Windows Explorer can't display embedded pictures I saved using ID3v2 Why ?

I'm not happy with ATL performance. Is there a way to improve it ?

Integration

OK, I've downloaded the library. Now what ? Where do I start ?

You might want to read the Usage / Code snippets section of the documentation to get started with using ATL in your project.

I'm not interested in contributing to ATL and I need the XXX feature for my app. When will the XXX feature be implemented ?

You are welcome to use the Issues area to suggest and discuss new features.

Is there any way to see ATL in action on a specific music collection before integrating the library ?

I'm maintaining a fully native C# application called Ethos Cataloger, which is based on the latest version of ATL .NET. You're welcome to download it, scan your own audio files and even export the results on multiple output formats.

Development

What are Dummy classes used for ?

DummyReader and DummyTag are used whenever ATL does not know how to read data (e.g. no parsable metadata in DTS files / trying to read an unsupported audio format with ATL)

There's something wrong with the library but I have no useful output on the Console. Why so ?

ATL has been designed

  • to crash as silently as possible if something goes wrong during parsing, to make mass-processing easy
  • to redirect useful runtime information to your own logging system

As a consequence, many runtime issues are logged by the ATL logger rather than by standard Console output. The easiest way to display that is :

1/ Copy/paste ConsoleLogger.cs from the ATL.benchmark project to your project

2/ At initialization time, call ConsoleLogger log = new ConsoleLogger();

3/ That's it ! Console output now logs ATL activity, which should hopefully help you see what's going wrong

Really, some sections of the code could be better if XXX

ATL .NET is a project I'm maintaining during my free time, with the knowledge I've acquired by personal research on C#/.NET features and digital audio. I know it's not perfect, but it reaches its primary goal, i.e. scanning thousands of tracks from my music library in a matter of seconds.

Anyway, you're welcome to fork and submit any improvement, or discuss design and implementation choices on the Issues area.

Misc.

Help ! I don't know anything about programming, I just want to read XXX data from my audio files and write it into a list

You might be interested in using Ethos Cataloger, which is based on the latest version of ATL .NET. You're welcome to download it, scan your own audio files and export the results on multiple output formats.

Is there a way to make ATL write ID3v2.2 tags instead of ID3v2.3 or ID3v2.4 ?

If you really need ID3v2.2 support, please tell me about it and explain why

Windows Explorer can't display embedded pictures I saved using ID3v2 Why ?

By default, older versions of ATL (< v3.00) allowed to write picture descriptions using non-western characters (japanese, cyrillic...), which breaks compatibility with Windows explorer (that's quite a random thing to say, but it's true !)

Counting from v3.00, ATL encodes picture descriptions with the Latin-1 charset by default, which ensures that pictures do show up on Windows explorer !

You can tweak that behaviour with Settings.ID3v2_forceAPICEncodingToLatin1 (default : true)

I'm not happy with ATL performance. Is there a way to improve it ?

You can tweak the following global parameters :

  • Settings.FileBufferSize : a higher buffer size uses more memory but reduces the number of I/O operations. Recommended values are between 128 and the size of the file you're manipulating.

  • Settings.ForceDiskIO : perform all I/O operations directly on disk when updating tags instead of using a buffer. Reduces RAM usage but increases disk usage. Not recommended on slow storage (SD card, network drives)

If you're working on big files stored on slow storages, you may gain performance by copying the file locally (i.e. on the main device's fast storage), editing it there, and copying it back to its initial location once editing is done. You'll likely avoid tons of network overhead.

If you're distributing your app as a Flatpak package, the sandboxing systems make file I/O much slower. Enabling --filesystem=home on flatpak allows I/O speed to match that of a locally run version.

For any other issue regarding performance, feel free to open an issue on the tracker.