[http://ballroomdj.org/%|%BallroomDJ], by [bll], is a ballroom music player written in tcl/tk. ---- [bll] 2014-2-7 ; updated 2015-9-4 Wanting a gui portable to many operating systems (why do people use anything other than pack and grid?), I immediately turned to Tcl/Tk. BallroomDJ provides interfaces to manage the songs, edit the songs, play those songs from a manually selected list or automatically based on various rules, and optional audio file organization. Several external programs are used: vlc for playback, python-mutagen for mp3 tag handling, metaflac for flac tag handling, SoX to modify the audio files and various volume controls for linux, windows and mac osx. BallroomDJ requires a scrolling window for upwards of 30000 songs. I initially wrote a scrolling frame, but it only worked for about 1k-2k rows of data (as each row has some widgets in it). I wrote [Virtual Scrolling] to handle this amount of data, as none of the other solutions such as scrolling canvases or scrolling frames work with large amounts of data. The database is generally kept entirely in memory. I changed BallroomDJ to use a random access file interface for the database to allow individual entries in the database to be updated. This is not super fast, but works well and allows intercommunication of the database changes between the different processes, allowing for a much better user experience. The random access file is space padded and has a header and trailer so I can still source it to read it in (as the tcl parser is much faster than anything I can write in tcl). I still have to process and convert the dictionary entries in the database to objects, as objects are not serializable. While I don't have any translations as yet other than English(US) and English(GB), the program is fully localizable. I recently upgraded the comboboxes ([Combobox Enhancements]) to better support localizations. All buttons have had any -width specifier removed. Unicode filenames are interesting. python-mutagen now fully supports them. For other programs like SoX that do not, I have to rename the files, do the processing and then rename the file back to its proper unicode name again. Mac OS X has decomposed unicode filenames. These have to be converted with iconv (or tcllib has routines to do it). The user interface is very difficult to get working well for everyone without getting messy or cluttered. The font scaling works great with 4K displays, but I still had to go through my code and find places where I sized by pixels and fix those spots. 2016-1-9 : I believe that all of the localization issues have been resolved now that [collation] has been implemented. All the by-pixel sizing (spacing and borders) has been changed to points so high resolution displays should not have any sizing issues once font scaling is set. <> Multimedia | Tk