|
23 / 23 / 3
Регистрация: 19.11.2013
Сообщений: 74
|
||||||||||||||||
DirectSound C#. Как считать ровно минуту с микрофона?08.05.2015, 08:25. Показов 2652. Ответов 7
Вот сколько ищу не могу найти. Как считать ровно минуту с микрофона при использовании DirectSound.
Зараз я это сделал вот так.
0
|
||||||||||||||||
| 08.05.2015, 08:25 | |
|
Ответы с готовыми решениями:
7
DateTime: считать секунду за минуту Требуется "считать" громкость шума с микрофона как некое число
|
|
6 / 5 / 2
Регистрация: 12.04.2015
Сообщений: 35
|
||||||
| 09.05.2015, 14:31 | ||||||
|
Секунду проще всего посчитать по количеству записанных семплов:
bytesInSecond = waveFormat.SamplesPerSecond * (waveFormat.BitsPerSample / 8) * waveFormat.Channels * 60; Т.е. Записать чуть больше, а потом обрезать. Thread.Sleep(1000); - всегда больше секунды. Что касается одновременной записи, то тут все сложнее. Если каналы на одной звуковой карте, то может так случиться, что это физически невозможно. Но ту задержку которую вы видите, вы получаете не из-за тактов звуковой карты, а из-за того что на создание потока нужно время. Его можно минимизировать если сначала создать два потока, заморозить их при помощи мютексов, например, а потом из управляющего потока запустить их по очереди. Так задержка должна быть меньше. А еще меньше задержку можно сделать примерно так (в учебниках учат так не делать, и какие-нибудь решарперы на это должны ругаться):
1
|
||||||
|
23 / 23 / 3
Регистрация: 19.11.2013
Сообщений: 74
|
|
| 09.05.2015, 18:13 [ТС] | |
|
Спасибо за ответ. Да это действительно даст нам задержку намного меньше но мне нужно чтобы задержек совсем не было. Думал привинтить к каждому значению время. Но не знаю к чему цеплять эту дату. Цепляю к старту записи не подходит, к концу записи тоже не подходит, а значения записываются в буфере на звуковой и после записи секунды перемещаются к нам в масив. Что не даёт нам прикрепить реального времени.
0
|
|
|
23 / 23 / 3
Регистрация: 19.11.2013
Сообщений: 74
|
|||||||||||
| 09.05.2015, 18:25 [ТС] | |||||||||||
|
Вот как выглядит всё это время кажет что задержек нет, а график говорит о другом.
Время узнаю. вод так.
0
|
|||||||||||
|
23 / 23 / 3
Регистрация: 19.11.2013
Сообщений: 74
|
|
| 09.05.2015, 18:54 [ТС] | |
|
0
|
|
|
6 / 5 / 2
Регистрация: 12.04.2015
Сообщений: 35
|
|
| 09.05.2015, 19:48 | |
|
Виндовс вообще не является реалтаймовой операционной системой. Т.ч. то что вы от него хотите, грубо говоря, невозможно. Но возможно можно добиться какого-нибудь компромисса.
Мне не понятно как вы определяете точку с которой нужно рисовать кривую. Или вы читаете буфер, а в нем звук начинается не с начала? И что вы называете тактом? И еще пара замечаний. DateTime.UtcNow.Ticks; - не самый быстрый метод (он там внутри создает объект DateTime и это само по себе тормозно и не точно). Лучше вызывать Environment.TickCount (он просто дергает метод АПИ), главное помнить что значение может быть отрицательным. Во вторых, АПИштый GetTickCount() хоть и есть самый точный метод, но тоже недостаточно точный для работы со звуком и видео. Его точность ограничивается точностью системного таймера, а он тикает примерно 4 раза в секунду (всего лишь). Т.ч. верить всем этим значениям в контексте звука бессмысленно. ---------------------------- И на сколько уменьшилось расхождение если запускать потоки чтения одновременно по одному флагу?
1
|
|
|
23 / 23 / 3
Регистрация: 19.11.2013
Сообщений: 74
|
|||||||||||
| 12.05.2015, 12:07 [ТС] | |||||||||||
|
Я рисую кривую вот так.
0
|
|||||||||||
|
6 / 5 / 2
Регистрация: 12.04.2015
Сообщений: 35
|
|
| 12.05.2015, 19:26 | |
|
Ну тогда вы действительно хотите слишком многого.
![]() Мне тут подумалось, что смещение может быть вызвано самим АЦП в звуковой карте. Просто АЦП это штука не мгновенная и работает с задержкой. Более того на разных картах АЦП могут быть разными и задержки у них тоже могут быть разными, не говоря уже про остальную реализацию. Мастерите программную настраиваемую задержку для синхронизации, если это так важно.
0
|
|
| 12.05.2015, 19:26 | |
|
Помогаю со студенческими работами здесь
8
Переменная выдает 1 минуту одну картинку 2 минуту другую Как задействовать DirectSound? Как правильно подключить Microsoft.DirectX.DirectSound DirectSound. Как правильно, и какую библиотеку следует добавить? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|