У меня есть пример, совершенно бесполезное приложение, которое генерирует сигнал (короткий скачок некоторой частоты, сопровождаемый более длинным периодом молчания, в хвосте), затем должен записать его на звуковую карту. Звуковая карта просто зациклена на себе с помощью кабеля миниджек-миниджек. Поэтому мое приложение записывает только что переданный сигнал, чтобы определить задержку следующего пути:

app-> функции драйвера> dac-> lineout-> linein-> adc-> функции драйвера> приложение

Прежде всего, для моей задачи мне нужно минимизировать задержку, чтобы выйти за пределы миллисекунды. 0,01-0,1 мс удовлетворит, так как это приложение сонара на платформе ПК.

И во-вторых, я хотел бы иметь возможность переключаться с заполнения всего буфера на работу с отдельным образцом. Или, самое большее, минимизировать размер буфера, чтобы сделать его максимально коротким. Я рассчитал, что нужно 16 образцов или меньше при частоте дискретизации 192 кГц. Идеально для работы с отдельными образцами в реальном времени, я слышал, что это возможно.

Итак, как я могу "включить в реальном времени"? и какой вид реального времени мне нужно - жесткий или мягкий?

2 ответа2

3

Проверьте в вашем менеджере пакетов "rt" версию вашего linux-образа (ядра). Другой вариант - перекомпилировать ядро с помощью патча "rt".

Очень хорошее объяснение ядра реального времени смотрите по этой ссылке .

1

как я могу "включить в реальном времени"?

Csound предлагает воспроизведение звука в режиме реального времени через командную строку.
http://csound.github.io/download.html
http://www.csounds.com/manual/html/UsingRealTime.html

Он требует, чтобы вы загрузили и установили Csound и использовали его вместо стандартного аудиоустройства.

и какой вид реального времени мне нужно - жесткий или мягкий?

Csound - это «мягкое» решение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .