The Karaoke Manager Karman [ˈkaɾmɛ̃n] is a software that manages your UltraStar song library.
Everyone who has tried to manage an UltraStar karaoke library has probably experienced how difficult it can be to ensure that all songs in the library adhere to a certain quality standard. Most libraries contain low-bitrate audio, difficult file encodings, low-res or even missing artwork, incorrectly synchronized songs and a multitude of other problems. The Karman [ˈkaɾmɛ̃n] project aims to make it easier to manage large karaoke libraries.
Karman is an application running on a server that takes full control over your entire karaoke library. When using Karman you will not be moving songs into specific folders but instead you will use the import feature of the software to upload songs to the server. The software then manages the library and moves files into the right places. When you want to sing you can either sync the songs to your machine or if your network connection is fast enough you can just mount the respective folder.
In contrast to existing software (most notably the UltraStar Manager) Karman takes a few different approaches:
In the future Karman might do even more, eventually integrating a sophisticated song editor and intelligent library management
Karman is designed to be compatible with modern development and deployment strategies. At its core the Karman software consists of the Karman API Backend (in this repository). The backend provides a well-documented REST API through which clients can read data and make changes. The backend implements the song management logic and most of the import logic.
The user interface is implemented via a Web Frontend. The frontend provides the user interface of the software. It communicates with the backend exclusively via the documented REST API.
Karman is intended for users with huge libraries consisting of hundreds of gigabytes of songs. These kinds of libraries cannot feasibly be managed manually by a single person. There were multiple factors involved in the decision of going server side:
// TODO: More questions, maybe?