Ищу библиотеку обработки звука, обработка в реальном времени |
Здравствуйте, гость ( Вход | Регистрация )
Ищу библиотеку обработки звука, обработка в реальном времени |
mezmay |
18.12.2014, 14:19
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: 1 |
Задача: сделать устройство эквализации звука в реальном времени.
Пробовал на Qt 5 в Windows 7 сделать простую передачу звука с микрофона на линейный выход - задержки слишком большие, чтобы это можно было назвать "реальным временем" (ну то есть около 0.3 - 0.5 сек. И это при размере буфера не более 0.001 сек). Конкретно пользовался классами QAudioInput и QAudioOutput. Сейчас рассматриваю два основных варианта реализации - на одноплатном компьютере и на контроллере. Будет ли Qt работать в Linux существенно быстрее со звуком? Если нет, то какую быструю библиотеку ввода/вывода звука стоит посмотреть? upd: код:
Сообщение отредактировал mezmay - 18.12.2014, 14:29 |
|
|
mezmay |
18.12.2014, 17:12
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: 1 |
Попробовал сделать опять же в винде на библиотеке PortAudio. Задержки все равно слишком большие.
Возможно, это потому что используется стандартный аудио драйвер (т.е. не с малыми задержками = не ASIO). Будет ли в линуксе быстрее со стандартным драйвером? Или в операционной системе это нереально, даже с ASIO? Сообщение отредактировал mezmay - 18.12.2014, 17:22 |
|
|
Iron Bug |
18.12.2014, 18:47
Сообщение
#3
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
в Линюксе музыка нормально работает только с jackd. драйвер тут ни при чём, он работает с железякой. а jackd - это шина для обмена данными для звуковых девайсов. при достаточно шустром проце задержки при работе с jackd минимальны (миллисекунды или меньше). но насчёт Qt не могу сказать, будет ли она сама тормозить или умеет ли она работать с jackd.
с другой стороны, jackd - не дефолтная шина для большинства дистрибутивов. по умолчанию обычно ставится PulseAudio - тормозная шина, которая имеет жирную юзерскую обвязку и всякие плагины для приложений, но не годится для профессиональной работы со звуком. |
|
|
mezmay |
19.12.2014, 13:24
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: 1 |
Поставил Ubuntu 14.04.1, сначала просто запустил тот же исходник на Qt - быстрее, но явно недостаточно для реального времени.
Установил библиотеку PortAudio (и ALSA для нее), при запуске проги на ней в output Creator'a валятся ошибки: Цитата ALSA lib pcm_dsnoop.c:618:(snd_pcm_dsnoop_open) unable to open slave ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side bt_audio_service_open: connect() failed: Connection refused (111) bt_audio_service_open: connect() failed: Connection refused (111) bt_audio_service_open: connect() failed: Connection refused (111) bt_audio_service_open: connect() failed: Connection refused (111) ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave Потом установил jackd, прога на Qt перестала запускаться, output в debug'e: Цитата Debugging starts &"warning: GDB: Failed to set controlling terminal: Inappropriate ioctl for device\n В релизе просто не запускается. upd: удалил pulseaudio, прога на Qt стала запускаться и задержки стали меньше. Прога на PortAudio тоже стала запускаться, но звук сильно прерывается. И думаю что они работают не через jack upd 2: сейчас без pulseaudio на Qt получается "почти риалтайм". При этом сама Ubuntu работает как-то не особенно быстро. Может стоит установить что-нибудь на риалтаймовом ядре, и все будет ок? Сообщение отредактировал mezmay - 19.12.2014, 15:46 |
|
|
mezmay |
19.12.2014, 17:53
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: 1 |
upd 3:Jack'ом проблема судя по всему не решится: сконнектил в джеке вход на выход, всё равно задержка есть
|
|
|
Iron Bug |
19.12.2014, 20:15
Сообщение
#6
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
|
|
|
mezmay |
20.12.2014, 14:05
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: 1 |
А как вообще делать чтобы приложение "работало через JACK"?
|
|
|
Iron Bug |
20.12.2014, 15:43
Сообщение
#8
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
использовать API для jackd. всё стандартно, как работа с любой другой библиотекой.
|
|
|
Текстовая версия | Сейчас: 28.11.2024, 14:55 |