Предлагаю такой вариант алгоритма:
1.Для каждого параметра, подлежащего рандомизации:
2. генерируется случайное число в диапазоне, допустимом для заданного параметра (например значение от 0 до 3, если генерируется случайная форма волны осциллятора в инструменте с 4 возможными формами волны (синус, пила, зуб, меандр));
3. отбрасываютя экстремальные значения, из-за которых может получиться "90% неюзаемого шлака" (для примера, частота обреза фильтра НЧ в диапазоне от 0 до 10, или, скажем время атаки огибающей амплитуды сигнала свыше 100 (здесь я имею ввиду значения СС в диапазоне от 0 до 127, а не абсолютные величины в Герцах или миллисекундах)). Если сгенерированное значение отброшено, переходим к п.2 для повторной генерирования требуемого параметра. Если значение принимается, переходим у п.1 для генерирования следующего параметра.
4.Конец алгоритма.
Достаточно просто. Все нюансы и сложности в отбраковке экстремальных значений, из-за которых может получиться, по словам уважаемого
@General Dead, "90% процентов того самого неюзаемого шлака".