mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.54k stars 1.29k forks source link

Deal with case insensitive file systems: m4a vs. M4A, mp3 vs. MP3, wav vs. WAV #12746

Open Eve00000 opened 9 months ago

Eve00000 commented 9 months ago

Bug Description

Mixxxx thinks "song1.m4a" is another song then "song1.M4A", importing crates / playlists ... leads to multiple occurences of same track, existing tracks were put in 'missing', so I lost playlist and crates. It took me a while to find out, I had to change all extensions to capitals (files and dbase) to sort it out. Maybe rstore file locations always al uppercase in dbase?

Version

2.3.6

OS

Win 10

daschuer commented 9 months ago

Mixxx assumes case sensitive file systems. I think we need to check if the case is matches the expected case and do "something." But what can be done? Frome a programmers perspective I would prompt the user to fix the case spelling, but that is annoying for the user. Fixing it inside Mixxx is probably not trivial because we don't know yet if the used file system is case sensitive or not.

daschuer commented 9 months ago

As a workaround, make sure your imported playlist use the correct casing.

Eve00000 commented 9 months ago

Hello, thank you for the feedback. I'll will give some more explanation. Playlists are generated by different tools, some tools export as uppercase / lowercase or title case. I tried to import a lot of playlists. I noticed that Mixxxx just imports the list without checking if the file exists. 'I tried with some dummy-entrees). Maybe Mixxx should check the existence of the list-elements as ucase(track-locations.location) = ucase(file-location-on-disk) or lcase.... Meanwhile I wrote some tools to scan all my music files to change the ext in lcase and check all my playlists. For me it was not such a big deal once I discovered the problem, but not everybody has the same capabilities. For other users it could be an error.. I like Mixxx a lot, certainly with a dbase as base. Kind regards