Phelix is a duplicates removal tool with acoustical audio matcher. Goal of the application is to find duplicated audio files insidie selected folders. Duplicates with bad or missing music-tags but same or similar sound will be detected by audio matcher.
Audio matcher will detect duplicates even if audio signals are shifted; started at different moments; if audio signals are ripped with different bit rates; if audio signals are ripped with different volumes.
Program design of Phelix obliges to concurrent computing paradigm. This is done to get computing power from MultiCore CPU PC systems. User can control the level of concurrency. Performance: 4 audio executions per seconds on AMD Opteron 270 (DualCore) in 1 thread mode, or 7 audio executions per seconds in 2 threads mode (memory consumption: approximately 40MB of RAM for 1000 songs).
Classical audio tags matcher operates on OGG and MP3 files. Music-tags matcher has a very long history and has evolved continuously.
Supported strategies are: Strict Tags strategy, Less Strict Tags strategy. Loose Tags strategy, and [Artist, Song] strategy. Matching can operate in incremental mode. In this mode, user can work on so-far collected duplicates while the matcher processes are in progress.
Program automatically chooses which duplicates will be moved out and which one will be kept. Decision is ruled by 'keep-file-criteria'. Criteria is controlled by user and can include comparisons of: file type, file length, bit rate, song length, number of songs in folder and file creation time. User can manually overrule the program decisions.
Program automatically detects distrusted groups of duplicates. Detection criteria is based on song length deviation and can be controlled by user. Distrusted groups of duplicates can be separated from trusted.
Files are never deleted by this tool, they are removed to the destination directory. Undo remove operation is supported (if removed files are not deleted by user).
Achieved knowledge about the scanned music can be persistently saved in Phelix's library repository. Stored information will be retrieved from repository when needed to skip the re-execution of jobs that have already been executed in previous runs of application.