Короче пришел к такому решению. Радиус расчитывается до 1% громкости от изначальной. И при достижении этого порога, звук перестает проигрываться.
float f = 0.01f; //1% от изначальной громкости
float m = sound_source.minimum_distance;
float a = sound_source.attenuation;
float sound_radius = std::max((m / f - m) / (a * m), m);
Вот к примеру при параметрах
minimum_distance = 2
attenuation = 10
1% громкости достигается на расстоянии 9.9 клеток.