DSP functions have no effect on the amount of data you get from BASS_ChannelGetData.
Well, that's my problem too!

Where is the data apparently being removed from, eg. start, end, all over the place? Does the problem stop if you remove your normalize DSP? If so, what does that function look like?
It's all over the place (jumps). But only if I apply the DSPs! That should not change the buffer length, shouldn't it?
How come that I apply a DSP and get less data?

Also, can you reproduce the problem with the precompiled WRITEWAV example? (in C\BIN)
If I use the code from above
without DSPs then it's ok.
I could write down the steps and you could check whats goin' on with a debug version of bass.dll!
Just tried with BASS FX Equalizer and BASS FX Phaser:
Source MP3: 8:15.67
Result WAV: 8:02.35
Very nasty eh?

If I don't use any DSPs then I get a little (2-3sec) difference only. There is something going on... Maybe my Stream 32bit WAV Plugin didn't work at all, all time!

Just checked writewav and it's ok!
If I use my other Save As WAV... (inside MP3SE) that one is all right also. Something is not right with my above code, (or) but how comes that DSPs affect it?