Future work: I want to set reasonable expectations for Ocarina 6 so that I don't have to spend a large amount of time coding before releasing something to the wild. This section will be a list of features that I want, but should be deferred to a future release so basic support can be coded. Hint: If feature B depends on A, implement A in 6.x and B in 6.x+1 - New default groups: Unplayed tracks - Categories: Use these to make "groups of groups" for better organization. Different categories can include Album, Artist and Genere dynamic groups in addition to user created groups (see below) The Artist, Album and Genre "tables" can be used to populate these categories. - User created song groups: Basic add and remove features can be implemented using the Library and Banned Songs groups. This will give me a chance to test saving groups on a small scale before letting users create anything they want. - Save a user's playlist as a group: - Library defragment: Ocarina 6.0 will leave holes in the library when tracks are deleted, potentially leading to fragmentation and larger-than- needed file sizes. A "defragment" utility can be created to clean up unused slots. To help with fixing groups, a mapping of (old values) -> (new values) should be kept. - Fix track durations: Some tracks in my library are tagged with the wrong duration, so fix them as they are played. - Track tag editor: Make a pop-up window for editing the tags of a track. Be sure to update the library information and the on-disk file. - Album art: (easy) Start with album art fetching script (hard) Build in to Ocarina - Copy a song group to a different directory: This can be useful for keeping an external device (like an Android phone) updated with the music you want to listen to. Complications: I have an mp3 mirror of all my music, and I want the mp3s to be synced. Perhaps track mirrors in Ocarina? - Mirror directory: I rip music to .flac, but keep an mp3 mirror directory to sync to other computers and phones. An Ocarina tool to manage a COMPLETE library mirror might be a good idea so I no longer need to manage it externally. This can still be done with a script, a cron job, and maybe a "mirror this track" option in the library? Perhaps create a mirror group? - Extra testing ideas: - Run tests through valgrind to help find memory leaks - Some way to enable / disable tests during development - Run tests based on dependencies - Fix tests that will only work on my computer - Double check that all inputs and outputs are tested - Simple testing library? - Stop tests on failure - Test callbacks - Preferences: - Set default sort - Save window size - Set album art size - Rip out Ocarina 5.x importing and legacy file support - AirPlay / remote audio support - Media keys - Replaygain support External script to calculate values? Calculate value after first playback? Store in library :: Track structure - Autosave databases Artist, album, genere and library path don't change often so saving on every add / remove won't be a huge performance hit and may actually be more efficient in the long run. - Playqueue and database inherit from common class - "About" dialog - Investigate "Bulk insert" callbacks for performance - Initialize PQs with multiple flags - Prefill Song structures in each library :: Track