|
|
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
Как мы знаем - виндовс не позволяет выводить реал-тайм звук. Создаем буфер, пишем туда, отдаем на воспроизведение звуковой карте. Если возможно - создаем двойную/тройную буферизацию, и действуем как написано выше. При малом размере буфера в любом случае получаем щелчки и прерывания звука. Что делать, если буфер нужен очень маленький, порядка 1/50 сек ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2011, 00:01 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
что такое реал-тайм звук ? wav же воспроизводятся без разрывов, заиканий и т.п. ТотЕщеНубЧто делать, если буфер нужен очень маленький, порядка 1/50 сек ? а если сделать буфер на пару секунд, записать туда "Тишины", а потом выдать "звук", не ? или смотри тут http://jackaudio.org/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2011, 08:11 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
JoFanчто такое реал-тайм звук ? wav же воспроизводятся без разрывов, заиканий и т.п. Когда звук максимально по времени приближён к событию - например, звуковая реакция на нажатие клавиши. В wav-файле поток данных заранее полностью известен, а у меня нет - я буферы заполняю на лету. JoFanа если сделать буфер на пару секунд, записать туда "Тишины", а потом выдать "звук", не ? Для нужных мне интервалов даже "тишина" дает щелчки. JoFanили смотри тут http://jackaudio.org/ у них чуть другое... ps если сгенерированные данные пишу в wav-файл, то из него всё воспроизводится отлично, без пауз и щелчков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2011, 08:43 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
ТотЕщеНубJoFanа если сделать буфер на пару секунд, записать туда "Тишины", а потом выдать "звук", не ? Для нужных мне интервалов даже "тишина" дает щелчки. а ежели выдавать тишину постоянно, а когда, например, нажали клавишу - добавить в буфер немного нужных данных ? щелчков при таком подходе вроде бы и взяться неоткуда т.к. звуковая карта постоянно в "работе" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2011, 09:34 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
ТотЕщеНуб, у тебя - дрейф постоянной составляющей звука и некорректный FadeOut при завершении. Поэтому резкая смена амплитуды при появлении нового звукового события вызывает "щёлк". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2011, 14:06 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
maytonТотЕщеНуб, у тебя - дрейф постоянной составляющей звука и некорректный FadeOut при завершении. Поэтому резкая смена амплитуды при появлении нового звукового события вызывает "щёлк". не-а, проходили уже это, при генерировании волны её позиция запоминается - и новый буфер начинается с запомненой позиции. Для низких частот(ширина волны больше-визуально наглядней) это прекрасно видно в сохраненном wav-файле. JoFanа ежели выдавать тишину постоянно, а когда, например, нажали клавишу - добавить в буфер немного нужных данных ? щелчков при таком подходе вроде бы и взяться неоткуда т.к. звуковая карта постоянно в "работе" звуковая карта и так постоянно "в работе" - если событий нет - ей отдаются пустые буферы. Поясню - моя задача отдаленно похожа на пианино - нажали клавишу - пошёл звук, чем меньше размер буфера - тем быстрее отклик (событие -> звук). Возможно вижу свою проблему в том, что новый буфер не так быстро ставится в очередь как хотелось бы виндовс, наваяю для себя приложение отдающее "пустоту", скажу результаты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2011, 17:35 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
ТотЕщеНубне-а, проходили уже это, при генерировании волны её позиция запоминается - и новый буфер начинается с запомненой позиции. Для низких частот(ширина волны больше-визуально наглядней) это прекрасно видно в сохраненном wav-файле. Ты сам виновник своих ошибок в контексте своей ошибочной постановки. Ты прерываешь не мощность сигнала (демпфирование в музыкальных инструментах) а выборку амплитуды. Ты стартуешь сигнал (атака звука в музыке) из произвольного состоаяния ЦАП. Ты получаешь широкополосный треск вследствие своей собственной постановки. Что хотел по заданию - то и получил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2011, 17:40 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
поясните на пальцах для недалёких.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2011, 18:30 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
Это была общая теория. Звукокарта при неправильном программировании может выводить, трескучие, циклические, шумящие, запирающие диапазон звуки. Дальше говорить бесполезно Нужно смотреть твой код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2011, 18:36 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
сделаю для себя пару примеров - с пустотой и синусоидой - выложу результаты, надеюсь новый год не сильно помешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2011, 18:41 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
Для вывода звука в приложениях реального времени следует использовать DirectSound, а не WinAPI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2012, 21:48 |
|
||
|
Real-Time вывод звука
|
|||
|---|---|---|---|
|
#18+
RedCatX, может DirectMusic? - зачем такие предубеждения? - directx является обёрткой winapi? - directx не является кроссплатформенной? - лишние буфера не нужны? - для проигрывания wav-файла достаточно вызова 1-ой функции ОС ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2012, 11:37 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37626528&tid=1342495]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
163ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 482ms |

| 0 / 0 |
