Хочу вернуться к вопросу, который я задавал на lisper.ru (или lisp.ru, как его там? Сайт archimag'а)
В общем такая ситуация: я синтезирую звук в риалтайме через OSS (если чё, наверно можно взять Jack, но никаких альс или пульсаудио!) Звук идет от некоего объекта-генератора. Я хочу, чтобы при изменении мной параметра генератора, сразу изменился и звук.
Генерация и запись происходит примерно так:
(loop while t do
(write-buffer (gen-buffer generator) *oss-output*))
Вызов write-buffer блокирующий, т.е. пока буфер не запишется, выполнение дальше не пойдет. Соответственно, изменить буфер в это время нельзя, а только со следующей итерации, и будет слышна задержка.
Другой вариант: писать каждый семпл в отдельности. Но тогда слишком много системных вызовов, и тоже плохо.
Вот предложите модель, пожалуйста, чтобы и не ресурсозатратно, и в real-time. Язык не важен, в принципе, так как это что-то языконезависимое, в принципе.
Получасовое копание других (в основном cpp) прожектов ничего не дало, увы. А ещё беда в том, что они (SuperCollider, например, почему-то падают). Мне кажется, что в случае с SuperCollider это какой-то бустобаг.