Nowadays it has become increasingly common to use different online music streaming platforms, however we can still find offline stored and used music files in the collection of music fans. The differing formats, incomplete metadata and divided method of storage raises further obstacles in the way of managing a user’s complete collection in a unified manner and providing services based on it.
Through my thesis work, my goal was to develop an application, that addresses these problems. Among the services, that were to be implemented, the emphasis was placed on controlling music players, which I have accomplished both through an online and offline tool. Furthermore, I became acquainted with and made use of technologies, such as creating a fingerprint for musical files and reading, managing and updating their metadata from an online database.
I developed my client-side software on the .NET platform, using the WPF graphical library. I chose the TagLib# service for the management of metadata and the MetaBrainz library for updating it, which uses the web API of MusicBrainz. For the purpose of generating fingerprints, that uniquely identify musical files, I used the Chromaprint algorithm and the AcoustID.NET library, which implements it. I made use of the SQLite database manager module in persisting data of my application. The music players, which I chose to control, were the Spotify service and the Foobar2000 program, but it was an important aspect to provide easy of extensibility regarding the integration of further music players.
In the first part of my thesis I introduce the applied technologies and the importance of them. I elaborate on the generation and usage of a musical fingerprint, as well as the examination of a few online music players and streaming services. Following that, I am going to describe the engineering design of my application, the goals that were concerned and the design principles that were used and the general structure of the program. Finally, I present the implementation of each function and analyze the improvement possibilities.