Steven, stupid question:
Are you actually setting the device rate and channel rate from the file information or are you using the default one provided in the BASS_CHANNELINFO struct? It seems to work OK for me when I set the two rates using:
BASS_ASIO_ChannelSetRate(0, 0, 88000);
BASS_ASIO_SetRate(88000);
chan=BASS_DSD_StreamCreateFile(FALSE,"file.dsf",0,0,BASS_DSD_DOP|BASS_SAMPLE_FLOAT|BASS_STREAM_DECODE|BASS_SAMPLE_LOOP,0);
... (play file)
BASS_ASIO_ChannelSetRate(0, 0, 41000);
BASS_ASIO_SetRate(41000);
chan=BASS_MusicLoad(FALSE, "file.wav", 0, 0, BASS_SAMPLE_LOOP | BASS_STREAM_DECODE | BASS_SAMPLE_FLOAT | BASS_MUSIC_RAMPS | BASS_MUSIC_PRESCAN, 0)
...