Don't use Bass.BASS_ChannelGetData in a loop, this will just cause 100 % CPU (1 Core on Multicore), make your Programs Thread Block, make it slow and waste CPU time.
Just imagine you have a leak in a Tank and to stop the leaking fluid you don't put a Bucket underneath it to catch the Drops, you currently try to move the Backet as fast as possible under the Leak to catch any fluid which flows out of it ...
You should use Callbacks instead of calling Bass.BASS_ChannelGetData in a loop, a Recording Callback for example gets called whenever new data "arrived" from the recording channel (Microphone Input for example). Take a look at the Docs to see how to use (Recording) Callbacks and post back if you have troubles applying it.
Thanks a million, using Recording Callback works great!