oh i dunno. i wrote a basic wav player in pascal when i was 14. that used the internal speaker...
read each sample, grab its volumetric value and time, play sound from volume/time variables, repeat for next sample until end of file.
was a little bit ... "fuzzy" though.. :-D this was on an RM Nimbus 12Mhz 286...
multiple channels... i wonder... shouldn't be two hard....