Skip to content

List of features required for proper sub tune support

Erik Massop edited this page Nov 4, 2017 · 1 revision

This matter has moderate level of complexity due to differences in formats having sub-tunes. SID-tunes are rather simple, the file header defines number of sub-tunes, thus it is known without running any emulated code. Some special custom module playing routines (supported by UADE) are more problematic, they _may_ require undefined length of execution of the actual emulation to determine the number of sub-tunes. Thus I have come up with two slightly distinct ways to implement good support for sub-tunes, and I suggest following:

Similar in both methods

  • There should be a way to query number of available sub-tunes from decoder plugin. The decoder could return number of tunes IF KNOWN, or some special values if the number is known only after execution (not feasible to detect while adding files to playlist)

Method #1 (more complex, possibly better)

  • Core should support non-linear numbering of sub-tunes, e.g. it should be possible for a plugin to tell core "I have sub-tunes #1, #7 and #18 available, but no others." This is because the plugin may want to discard some subtunes depending on user's settings or other reasons.
  • Based on ackquired information, the core should add to playlist/medialib/whatever the sub-tunes (IF number of subtunes is known)
  • If number of subtunes is NOT known, just add the main file/tune. For this to work, there should be a sub-tune selector control in clients, see method #2 for that.

Method #2 (simpler)

  • Use a sub-tune selector (for CLI clients adding arbitrary subtunes should suffice).
  • A way for clients to query the number of subtunes.
  • A way for plugins to signal clients/core that information has changed (number of subtunes for example).

Other special requirements for special formats

XMMS2 core and clients must support following for succesful working of special formats like SID.

  • Any information (song length, title, etc.) may be unknown or it may change during decoding. Core must support a way to signal such changes and update information.
Clone this wiki locally