Is it possible that the libbassmix.so file is the wrong version, eg. softfp instead of hardfp?
I thought of that too, but I deleted all .so and replaced them with hardfp versions from bass24-linux-arm.zip. So, unless there's a wrong version in that archive, this shouldn't be the problem. I also tried with softfp versions just to make sure. It couldn't find libs then, as expected.
If that's not it, does Mono have a way to define the load order of native libraries, and if so, is BASS loaded before BASSmix? If a log file isn't written when using the debug BASS version, then it seems like BASSmix is getting loaded before BASS is.
I wouldn't know if such a mechanism exists, a quick web search returned nothing useful. At least according to my code, it seems unreasonable that bassmix should get loaded before bass:
public Streamer(int sampleRate, int numberOfChannels, int maxNumberOfStreams)
{
// our streams
_Streams = new List<InetStream>();
MaximumStreams = maxNumberOfStreams;
// BASS setup / init
SetupBassLibrary();
InitBassLibrary();
// this is the output mixer
_MixerStream = BassMix.BASS_Mixer_StreamCreate(sampleRate, numberOfChannels, BASSFlag.BASS_MIXER_NONSTOP | (FloatingPointSupport ? BASSFlag.BASS_SAMPLE_FLOAT : 0));
// enable level meter update
_LevelsUpdate.Elapsed += _LevelsUpdate_Elapsed;
_LevelsUpdate.Interval = 250;
_LevelsUpdate.Start();
// play back the output channel to the default audio device
Bass.BASS_ChannelPlay(_MixerStream, true);
}
and further:
private void SetupBassLibrary()
{
// we must register BASS.NET to be able to run in console, otherwise will crash on Unix without X Server
//BassNet.Registration("<email>", "<regkey>"); // get a freeware key by registering on http://bass.radio42.com/
// System specific path separator
var dirSep = System.IO.Path.DirectorySeparatorChar;
// load BASS plugins from current directory
Bass.BASS_PluginLoadDirectory(Environment.CurrentDirectory);
// load BASS plugins from codecs subdirectory
Bass.BASS_PluginLoadDirectory(Environment.CurrentDirectory + dirSep + "codecs" + dirSep);
// set BASS configuration
Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_READTIMEOUT, 20000); // network read timeout 20000ms
Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_BUFFER, 10000); // network buffer size 10000ms
Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PREBUF, 30); // prebuffer 30% of buffer size
Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PLAYLIST, true); // enable playlist processing
}
private void InitBassLibrary(int deviceID = -1)
{
if (Bass.BASS_Init(deviceID, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero))
{
this.FloatingPointSupport = CheckFloatSupport();
}
else
{
this.FloatingPointSupport = false;
throw new Exception("BASS_Init failed (" + Bass.BASS_ErrorGetCode().ToString() + ").");
}
}
But then again, I think you are referring to the order in which mono loads the involved native libs. Which has most likely absolutely nothing to do with the order in which I'm calling any functions in my code...

Now discussing the issue on #mono@irc.gnome.org, but the guy to talk to is currently not around. What the others there had to say so far:
<directhex> you're 101% certain that these libbass.so binaries are for armv6, not armv7?
Well I can tell by experience that libbass.so itself works fine on armv6. And I believe that there wouldn't be a chance that the libbassmix.so was accidentally built for v7 instead of v6. Right, Ian?