Ну если указанный пример работает, то там используется:
Код:
type
TSingleArray = array of Single;
var
Buf : TSingleArray;
begin
...
SetLength(Buf, ci.chans * SPECWIDTH);
BASS_ChannelGetData(chan, buf, (ci.chans * SPECWIDTH * SizeOf(Single)) or BASS_DATA_FLOAT); // get the sample data (floating-point to avoid 8 & 16 bit processing)
и всё работает. С двумерным масивом не пробовал.