Giter VIP home page Giter VIP logo

atldotnet's Introduction

Audio Tools Library (ATL) for .NET NetCore NetStandard

Status / master branch

Linux and OSX Mono Build : Build Status (powered by Travis CI)

Windows .NET Build : Build status (powered by AppVeyor)

Code coverage : codecov (powered by CodeCov)

NuGet version : NuGet

Optimized with : BenchmarkDotNet and CodeTrack

What is ATL .NET ?

Audio Tools Library .NET is the C# port of the original ATL, written in Pascal by the MAC Team (Jürgen Faul, Gambit and contributors).

It is aimed at giving C# developers a native, portable and easy-to-use library to access and read data from various digital audio formats.

As a showcase, I have used ATL.NET as a cornerstone to build Ethos Cataloger, a digital music cataloging software written entirely in C#.

What is NOT ATL .NET ?

Audio Tools Library .NET is not

  • a standalone application : it is a library aimed at being used by developers to build software

  • an audio music player : it gives access to various properties and metadata (see below for the comprehensive list), but does not process audio data into an audible signal

Why open source ?

ATL has been open source since its creation. The ATL 2.3 source written in Pascal language is still out there on Sourceforge !

By publicly sharing the result of their work, the MAC team has helped many developers to gain tremendous time in creating audio tools.

As a fellow audiophile and developer, I'm proudly extending and improving their initial contribution to the open source community.

Why would I want to use ATL while TagLib is out there ?

  • ATL is a fully native C# implementation, which makes portability trivial if your app is already based on .NET or Mono frameworks

  • ATL features a flexible logging system which allows you to catch and record audio file reading/writing incidents into your app

  • ATL supports more audio formats than TagLib, including video game audio formats (SPC, PSF, VGM, GYM)

  • ATL supports chapters natively

  • ATL supports Playlists and Cuesheets

How to use it ? Which platforms and .NET/Mono versions does ATL run on ?

The ATL library runs on .NET Core 2.0+ / .NET Standard 2.0+ / .NET Framework 3.0+ / Mono 2.0+

ATL unit tests run on .NET Framework 4.5+

The library and its tests have been maintained on Visual Studio Express 2012, 2015 and 2017 Community

Please refer to the Code snippets section of the Documentation for quick usage

What kind of data can ATL actually read ? From which formats ?

SUPPORTED AUDIO FORMATS AND TAGGING STANDARDS

NB1 : Empty cells mean "not applicable for this audio format"

NB2 : All metadata is read according to Unicode/UTF-8 encoding when applicable, which means any "foreign" character (japanese, chinese, cyrillic...) will be recognized and displayed properly

R= Read / W= Write

Audio format Extensions ID3v1.0-1.1 support ID3v2.2-2.4 support APEtag 1.0-2.0 support Format-specific tagging support
Advanced Audio Coding, Apple Lossless (ALAC) .AAC, .MP4, .M4A R/W R/W R/W R/W
Audio Interchange File Format .AIF, .AIFF, .AIFC R/W R/W
Digital Theatre System .DTS
Direct Stream Digital .DSD, .DSF R/W
Dolby Digital .AC3 R/W
Extended Module .XM R/W (2)
Free Lossless Audio Codec .FLAC R/W R/W
Genesis YM2612 .GYM R/W
Impulse Tracker .IT R/W (2)
Musical Instruments Digital Interface .MID, .MIDI R/W (1)
Monkey's Audio .APE R/W R/W R/W
MPEG Audio Layer .MP1, .MP2, .MP3 R/W R/W R/W
MusePack / MPEGplus .MPC, .MP+ R/W R/W R/W
Noisetracker/Soundtracker/Protracker .MOD R/W (2)
OGG : Vorbis, Opus .OGG, .OPUS R/W
OptimFROG .OFR, .OFS R/W R/W R/W
Portable Sound Format .PSF, .PSF1, .PSF2, .MINIPSF, .MINIPSF1, .MINIPSF2, .SSF, .MINISSF, .DSF, .MINIDSF, .GSF, .MINIGSF, .QSF, .MINISQF R/W
ScreamTracker .S3M R/W (2)
SPC700 (Super Nintendo Sound files) .SPC R/W
Toms' losslesss Audio Kompressor .TAK R/W
True Audio .TTA R/W R/W R/W
TwinVQ .VQF R/W
PCM (uncompressed audio) .WAV R/W
Video Game Music (SEGA systems sound files) .VGM, .VGZ R/W
WavPack .WV R/W
Windows Media Audio/Advanced Systems Format .WMA,.ASF R/W

(1) : MIDI meta events appear on the track's Comment field

(2) : all sample names appear on the track's Comment field. Track title only is editable.

DETECTED FIELDS

  • Audio data (from audio data) : Bitrate, Sample rate, Duration, VBR, Codec family
  • Standard Metadata (from tags) : Title, Artist, Album Artist, Composer, Conductor, Description, Comment, Genre, Track number, Disc number, Year, Album, Rating, Publisher, Copyright, Original album, Original artist, Embedded pictures, Chapters
  • Custom Metadata : any other field that might be in the tag is readable and editable by ATL

SUPPORTED PLAYLISTS FORMATS : ASX, B4S, FPL (experimental), M3U, M3U8, PLS, SMIL (including WPL and ZPL), XSPF

SUPPORTED CUESHEETS FORMATS : CUE

What is the roadmap of ATL.NET ?

  • Support for Broadcast wave metadata
  • Support for other audio file formats : Speex, Theora, Audible
  • Connectors to other library file formats (e.g. iTunes)

Does ATL.NET include code authored by other people ?

ATL.NET is based on :

  • Audio Tools Library 2.3 by Jurgen Faul, Mattias Dahlberg, Gambit, MaDah and Erik Stenborg (code ported from Pascal to C# and refactored)

  • MIDI class 1.5 by Valentin Schmidt & Michael Mlivoncic (code ported from PHP to C# and refactored)

atldotnet's People

Contributors

zeugma440 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.