В общем, пересмотрел, перечитал все топики по Вашим ссылкам. Очень непростые и довольно сложные алгоритмы. Я все скачал и попробовал сделать то, что мне нужно и почти получилось. Сначала взял коды от Майкла. Вы как раз делали нечто похожее на отображение уровня сигнала при записи. У вас там есть пример проекта. Я его тоже скачал, но он не пошел. Так же как и Вы не нашел нужного интерфейса. У меня
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...