Skip to content

A content management/cataloguing/database format for management of music files that references music files by their digital fingerprint which is able to differentiate between file content at the bit level.

License

Notifications You must be signed in to change notification settings

Nomen-Luni/Audiofiles-completionist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

Audiofiles-completionist

What is it?

A content management/cataloguing/database format for management of music files that references music files by their digital fingerprint which is able to differentiate between file content at the bit level

What it does:

  • Identifies an EXACT audio file, down to the bit level using a unique digital fingerprint.
  • Allows you to create playlists specifying these EXACT audio files which can represent singles or albums. The playlist can also be identified by a unique digital fingerprint, so that fingerprint specifies an exact playlist containing exactly (down to the bit level) the required audio files.
  • Has separate database/file structures representing each of the following:
    • The audio file (this is just your standard audio file on disc, but containing a tag with the fingerprint)
    • The single/album - This contains the album details and an ordered list of audio files, identified by fingerprint.
    • The collection - This contains the collection details and an ordered list of singles/albums, identified by fingerprint.

Use cases:

  • Allows community collaboration to identify the exemplary versions of digital music, particularly that where various quality rips from an analogue medium such as vinyl exist.
  • Given a playlist, all the music from that playlist can be quickly identified and each audio file can potentially be pulled from a different source, in the knowledge that is exactly the audio file (to bit level) specified in the playlist.
  • Allows easy automated checking that existing collections stored in this database format are all present/correct/and without bit rot.
  • Currently each audio file (usually representing a single track on an album) generally stores information on the album it comes from. Moving the album specification into a separate file/data structure allows more flexibility, for example a music manager can reference the same audio file multiple times if it is a track on multiple albums in a collection, and assign the correct album information to it.

How it works:

  • A sha256 hash of content is generated to uniquely identify each audio file/playlist(representing an album or single)/playlist (representing a collection of albums/singles)
  • This is basically GIT minus the history tracking and minus the complexity.
  • FLAC files already contain a fingerprint, but sha256 is preferred as superior (less chance of collision- if it's good enough for GIT...

Where are the file format specifications?

  • There are none at this stage. Although it will be pretty simple there's no point generating anything until we've figured out if the concept has legs and is not a rehash (there's a pun there) of something already in existence.

But this has already been done / It's nothing special/ What's the point?

  • I just put this up to begin a discussion.
  • If it's already been done, let me know.
  • If you can't see the point, it's likely this is not something you will be interested in.
  • Problems or improvements on the idea? Let me know.

When's it going to be done?

It's just for discussion at this point, but if something serviceable along these lines doesn't already exist I plan to throw something basic together in Python to prove the concept, which I will share here.

It's not something I'm planning to build into a music player or online music application, but if it generates enough interest maybe others will get on board.

About

A content management/cataloguing/database format for management of music files that references music files by their digital fingerprint which is able to differentiate between file content at the bit level.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published