I haven't vanished Dave... sorry I haven't had a chance to reply to your PM, but I'm absolutely up to my neck in Nintendo DS at the moment (work) and it ain't pretty!
My music player was designed to be called in an interrupt every VSync and it makes sound by direct soundchip access rather than through OSWORD. It would be perfect, apart from that it's very hardwired to use certain 'envelopes' and it expects channel 1 to be tuned periodic noise (to produce a 'bassline'), which means there's no opportunity for 'drums'.
As far as creating music was concerned, I made one-and-a-half tunes to demo it - they were created out of DATA statements in Basic - not quite as obscure as lists of numbers, but more like:
DATA C3, 8, D3, 4, E3, 4, F3, 16
meaning: C (octave 3, length 8); D (octave 3, length 4) ..etc...
It also allowed you to create phrases, i.e. small passages of music, which could then be placed anywhere in the sound stream, in order to avoid duplication all the time - kinda like a melody macro

All this was done in the same DATA statements, with some vaguely user-readable syntax; likewise selection of 'envelopes'.
All in all, it's very hacky (but aren't these things always), and probably not particularly user-friendly for a professional muso - particularly given the need for awareness of repeating phrases which can be "macro'd".
I'd be up for trying my luck with composing a small tune myself, but really I can't imagine where the time's gonna come from at the moment
