Please use .cc when adding stuff to arts directly. FIXME identation used? find parameters to indent to replicate Q: What libraries do I link against to make a PlayObject? A: kmedia2_idl, soundserver_idl and artsflow Q: What would a good example of a PlayObject be? A: Checkout the sources for the audiofile_artsplugin. FIXME Create a decent example Q: What does the "preference" mean in the mcopclass file? A: This determines which PlayObject to use for a certain type of file. FIXME The higher the number, the more "prefered" the PlayObject is? Q: I've got a "rough draft" of my PlayObject. How can I test it? A: Run 'make install' as root (NEEDED!), and then launch kaboodle. If your files do not show up in the 'Open File' dialog, then they have not been properly registered via your .mcopclass file. Go back and doublecheck that it is not only properly formatted (with no typos!), but is also put into the right directory. You should be able to compare against other .mcopclass files installed already. Once they are recognized, try and play one. More than likely, artsd and/or kaboodle will crash at this point. On to debugging! If it works perfectly the first time, I officially hate you. Q: I want to create a PlayObject. What is the bare minimum that I need to do? A: * make an IDL file, and define a new interface (i.e. FooPlayObject) * derive from the skeleton in your implementation * to make it easier, consider deriving from Arts::StdSynthModule * implement all virtual methods that the compiler tells you to reimplement You need to implement calculateBlock, basically. But since most decoders provide data as 16bit integer in some fixed sampling rate, PlayObjects usually need to use some form of conversion. There are three commonly used: 1. resample.h: Arts::Resampler, Arts::Refiller 2. convert.h: uni_convert_stereo_2float 3. http://www.mega-nerd.com/SRC/ (libsamplerate) The first is easier to use (of the two that ship with arts). Someone will need to write somewhat more perfect resampling code, that supplies the features of both (for instance, convert.h can also resample _to_ 16bit data, not only _from_). However for now, choose what is more convenient for you, or implement your own resampling. Q: I want to use threading in my PlayObject. Is there a standard way to do that? A: While it is not an official part of kde-multimedia, several playobjects are now using itc (available at http://www.derkarl.org/itc/). Itc was written by Charles Samuels, author of several other arts-based projects, including noatun.