Визуализация звуковых сигналов от микрофона

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Vova_2581
Постоялец
Постоялец
 
Сообщения: 363
Зарегистрирован: 10.01.2010 (Вс) 18:08

Визуализация звуковых сигналов от микрофона

Сообщение Vova_2581 » 03.10.2023 (Вт) 19:33

Здравствуйте! Подскажите, пожалуйста, может есть какая-то функция или не очень сложный механизм без ocx, dll и прочих дополнительных компонентов. Любой пример, буду благодарен. Мне нужно для работы в свою программу проверки звуковой консоли добавить визуальный отклик работы микрофона. Может простое мигание лейбла в такт звуку или ещё как-то не принципиально. Как можно это сделать?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Визуализация звуковых сигналов от микрофона

Сообщение Mikle » 03.10.2023 (Вт) 22:18

Vova_2581 писал(а):без ocx, dll

Нужно подключить, как минимум, DirectSound. Без dll и ocx, но с tlb от The Trick, иначе никак.

The trick
Постоялец
Постоялец
 
Сообщения: 775
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение The trick » 03.10.2023 (Вт) 23:12

UA6527P

Vova_2581
Постоялец
Постоялец
 
Сообщения: 363
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение Vova_2581 » 04.10.2023 (Ср) 7:14

Ого! Информации очень много. Буду читать, разбираться. Спасибо большое Вам! Если будут вопросы, ещё напишу. Спасибо!!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Визуализация звуковых сигналов от микрофона

Сообщение Хакер » 05.10.2023 (Чт) 2:32

Mikle писал(а):Нужно подключить, как минимум, DirectSound

Почему как минимум? Почему не waveinOpen и пр?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Визуализация звуковых сигналов от микрофона

Сообщение Mikle » 05.10.2023 (Чт) 8:26

Хакер писал(а):waveinOpen

Ну, да. Это ещё минималистичнее.

Vova_2581
Постоялец
Постоялец
 
Сообщения: 363
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение Vova_2581 » 09.10.2023 (Пн) 19:22

В общем, пересмотрел, перечитал все топики по Вашим ссылкам. Очень непростые и довольно сложные алгоритмы. Я все скачал и попробовал сделать то, что мне нужно и почти получилось. Сначала взял коды от Майкла. Вы как раз делали нечто похожее на отображение уровня сигнала при записи. У вас там есть пример проекта. Я его тоже скачал, но он не пошел. Так же как и Вы не нашел нужного интерфейса. У меня Direct... вместо IDirect... Получилась путаница, код получился не рабочим. На форуме есть элемент недосказанности... но не суть. Дело в том, что DirectSound8 требует наличие библиотеки dx8vb.dll – вот это для меня минус. Не хотелось бы привязываться к сторонним библиотекам и таскать их за собой. Можно было бы и с библиотекой, но тогда на мою простейшую программу нужно делать инсталлятор, прописывать dll регистрировать и прочее. Это не совсем то. Поэтому я пошел дальше к кодам от The trick. Нашел пример диктофона с визуализацией сигналов микрофона через Line элемента Pictures. Мне очень понравилось. Сделано очень классно. Там все вроде без dll обходится через обычные API функции. Как раз то, что нужно! Только контрол и модуль подключил к своему проекту и немного переделал коды от The trick под простой Label. Все получилось и уж было обрадовался, но дальнейшие испытания выявили какой-то баг. Пожалуйста, помогите разобраться в чем дело не могу понять. Вот в чем суть проблемы...

Код работает исправно и все отображает, но примерно через минуту все зависает и сбрасывается только по нажатию Ctrl+Break. В точке останова на строках...
Код: Выделить всё
For iChannel = 0 To PBK_NUMOFCHANNELS - 1
    value = value + Abs(CLng(capBuffer(iChannel, iAvg)))
Next 

в процедуре Redraw.

Возможно переполняется буфер или что-то типа того, не пойму.

Я взял оригинал проекта из папки TestCapture от The trick попробовал там, и ситуация точно такая же: зависание через минуту работы.

Помогите, пожалуйста, разобраться, как это исправить.

Вот мой вариант переделанного проекта от The trick...
Вложения
Project.rar
Мой вариант проекта с багом...
(24.1 Кб) Скачиваний: 6

The trick
Постоялец
Постоялец
 
Сообщения: 775
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение The trick » 09.10.2023 (Пн) 21:39

Сделай лучше вот так. Зачем тебе копить семплы?
Вложения
Project.zip
проект
(24.99 Кб) Скачиваний: 9
UA6527P

Vova_2581
Постоялец
Постоялец
 
Сообщения: 363
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение Vova_2581 » 09.10.2023 (Пн) 22:10

У меня в процедуре tSound_NewData выбивает ошибку "subscript out of range" на строчке lAbs = Abs(iSamp(lIndex, lCh))

серверянин
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 19.09.2023 (Вт) 8:00
Откуда: РФ

Re: Визуализация звуковых сигналов от микрофона

Сообщение серверянин » 09.10.2023 (Пн) 22:28

Да. Тот код неработоспособен.

А у Вас причина зависания в том, что capCount растет неограниченно.

The trick
Постоялец
Постоялец
 
Сообщения: 775
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение The trick » 09.10.2023 (Пн) 23:05

блин какая-то фигня, там другой код должен быть. позже скину.
UA6527P

Vova_2581
Постоялец
Постоялец
 
Сообщения: 363
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение Vova_2581 » 09.10.2023 (Пн) 23:26

The trick писал(а):блин какая-то фигня, там другой код должен быть. позже скину.

Хорошо, та это не срочно так что будем ждать. Самое главное, что все получается, только чуть-чуть доработать и все.
Серверянин, спасибо!

The trick
Постоялец
Постоялец
 
Сообщения: 775
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение The trick » 09.10.2023 (Пн) 23:54

Вот проект.
Вложения
Project.zip
(25.02 Кб) Скачиваний: 20
UA6527P

серверянин
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 19.09.2023 (Вт) 8:00
Откуда: РФ

Re: Визуализация звуковых сигналов от микрофона

Сообщение серверянин » 10.10.2023 (Вт) 7:32

Этот код у меня - работает.
Но есть маленький вопрос.
The trick, у Вас там стоит ReDim Preserve iSamp. Preserve там не играет роли в работе. Для чего Вы поставили его?
Является ли ReDim Preserve предпочтительнее чем ReDim, и если да, то чем именно?

Vova_2581
Постоялец
Постоялец
 
Сообщения: 363
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение Vova_2581 » 10.10.2023 (Вт) 9:19

The trick, чуть позже проверю, потом напишу.

серверянин писал(а):The trick, у Вас там стоит ReDim Preserve iSamp. Preserve там не играет роли в работе. Для чего Вы поставили его?
Является ли ReDim Preserve предпочтительнее чем ReDim, и если да, то чем именно?

Насколько я знаю, ReDim перезаписывает все элементы массива, то есть обновляет полностью все ячейки. А ReDim Preserve обновляет только те ячейки, которые изменялись оставляя при этом остальные нетронутыми. Ну, типа того.

The trick
Постоялец
Постоялец
 
Сообщения: 775
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение The trick » 10.10.2023 (Вт) 9:43

Тут разницы нет что использовать. Preserve оставил т.к. просто изменил существующий код где он был изначально.
UA6527P

Vova_2581
Постоялец
Постоялец
 
Сообщения: 363
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение Vova_2581 » 10.10.2023 (Вт) 19:10

Да! Теперь все работает! Ура! :cheers: Тестировал Ваш код целых 15 минут. Все идеально!

The trick, СПАСИБО БОЛЬШОЕ!

Очень необычный оригинальный код, как Вы это делаете, просто поражаюсь! То, что Вы профессиональный программист, и я так думаю не только Бейсика, это я уже понял, но так же подозреваю, что Вы еще имеете не последнее отношение к математике. Очень все непросто у Вас в кодах, стиль написания наводит такую на мысль. Вы просто супермастер! И это не лесть. Огромная Вам признательность за Вашу помощь!

The trick, СПАСИБО ВАМ! С удовольствием использую Ваши коды в своей утилите. СПАСИБО!
Последний раз редактировалось Vova_2581 17.10.2023 (Вт) 11:03, всего редактировалось 1 раз.

серверянин
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 19.09.2023 (Вт) 8:00
Откуда: РФ

Re: Визуализация звуковых сигналов от микрофона

Сообщение серверянин » 10.10.2023 (Вт) 21:20

Vova_2581 писал(а): Насколько я знаю, ReDim перезаписывает все элементы массива, то есть обновляет полностью все ячейки. А ReDim Preserve обновляет только те ячейки, которые изменялись оставляя при этом остальные нетронутыми.
Насколько я знаю, ReDim изменяет размер массива, и при этом обнуляет его. А с Preserve - не обнуляет.

Ваше мнение в адрес уважаемого The trick целиком поддерживаю и присоединяюсь. Его код говорит сам за себя.

И еще. В вашем случае конечно удобнее работать на VB. Но когда задача состоит целиком в работе только со звуковой подсистемой, то нету лучше и удобнее языка FlowStone. Он ориентирован специально на это.

Vova_2581
Постоялец
Постоялец
 
Сообщения: 363
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Визуализация звуковых сигналов от микрофона

Сообщение Vova_2581 » 11.10.2023 (Ср) 0:52

Да в принципе пока вполне хватает того, что есть, но за совет спасибо!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList  
cron