Great doc, thanks !1. wmp asks wmptse for the performer 2. wmptse maps that request to the PERFORMER field 3. wmptse calls its (or someone else's) vorbiscomment layer to get the PERFORMER field 4. inside vorbiscomment layer: switch(codec_type) case native-flac: use libFLAC to retrieve PERFORMER tag case ogg-vorbis: use libvorbis to retrieve PERFORMER tag cass ogg-speex: use libspeex to retrieve PERFORMER tag? ... Sorry but you guessed wrong WMP doesn't ask for anything, that's the whole problem...and that's what wmptse resolves. I have not documented it already, but in the spirit, wmptse is a workaround... Optimised, customisable, but ....it is. For that, i must get ALL the metadata in one raw. Simply because WMP doesn't specify which data has been added/modified/deleted (in fact, i even doesn't know the file name added for 'add' in the medialibrary...i must SEARCH IT with a "just added" trick...[no comments i found no other way]). Then i can parse all these metadata and add it in WMP (which in a pretty "create your own stack overflow", sends it to the medialibrary as a change [yes, my changes because of WMP notifying me of some change are considered changes and are notified to ME even before i've finished doing them !!! again i had to trick it a bit (Critical sections are my friends), but it's safe now]). On the other side, i can read metadata and write it "per changes" on the tagged file. That's why the plug in api (or tagsupport API) in WMPTSE is unbalanced between read and write... For now, i think i will code a native Flac support. It seems released and well documented... MaB_fr