Как вывести квадратную волну на моей звуковой карте

StackOverflow https://stackoverflow.com/questions/4186735

  •  10-10-2019
  •  | 
  •  

Вопрос

Я хотел бы создать цифровой (квадратный) сигнал на моей звуковой карте. Это прекрасно работает, если я генерирую высокие частоты. Но, поскольку я не могу выводить DC на звуковой карте, для более низких частот, полученные в результате цифровые биты, все будут медленно исчезают до 0.

Это то, что звуковые карты высокого прохода делают с моей квадратной волной:http://www.electronics-tutorials.ws/filter/fil39.gif

Какова математическая функция сигнала, что при прохождении через высокий проход станет квадратным?

В идеале решение продемонстрировано в Gnuplot.

Это было полезно?

Решение

Звуковая карта вырезает низкие частоты в форме волны, поэтому вам необходимо увеличить их на какое -то количество в том, что вы передаете к нему.

Квадратная волна содержит много частот (см. Раздел о серии Фурье здесь) Я подозреваю, что самый простой метод создания скорректированной квадратной волны-это суммирование серии Фурье, увеличивая амплитуды низкочастотных компонентов, чтобы компенсировать фильтр высокого прохождения на звуковой карте.

Чтобы выяснить, сколько увеличить каждый низкочастотный компонент, вам сначала необходимо измерить отклик фильтра с высоким частотом в вашей звуковой карте, путем вывода синусоидальных волн различных частот, но постоянной амплитуды и измерения для каждой частоты соотношение r(f) амплитуды вывода к амплитуде ввода. Затем, приближение к выходу квадратной волны может быть сгенерировано путем умножения амплитуды каждого частотного компонента f В квадратной волне серии Фурье 1/r(f) («обратный фильтр»).

Возможно, что фильтр высокого прохождения в звуковой карте также регулирует фазу сигнала. В этом случае можно было бы лучше моделировать высокий проход как RC Фильтр, (это, вероятно, то, как звуковая карта делает фильтрацию), и инвертировать как амплитуду, так и фазовый отклик из этого.

Другие советы

Некоторые из предыдущих ответов правильно отметили, что это фильтр высокого прохождения (конденсатор связи AC на выходе звуковой карты)-это то, что предотвращает низкочастотные квадратные волны от «оставаться на», поэтому они быстро распадаются.

Нет никакого способа полностью победить этот фильтр из программного обеспечения, иначе его там не будет, не так ли? Если вы можете жить с квадратными волнами с более низкой амплитудой на более низких частотах, вы можете аппроксимировать их, отправив что -то вроде треугольник волна. Анкет С точки зрения переходного анализа, теория операции здесь заключается в том, что по мере того, как конденсатор связи разряжается (блокируя DC), вы увеличиваете его напряжение смещения, чтобы противодействовать этому разряду, тем самым поддерживая плато квадратной волны. Конечно, у вас в конечном итоге закончится запасной запас PCM (вы не можете продолжать увеличивать напряжение на неопределенный срок), поэтому в этом отношении лучше 24-разрядная карта, чем 16-битная, поскольку она даст вам больше разрешения. Другой, более абстрактный способ подумать об этом - это то, что фильтр RC работает как дифференциатор, Таким образом, чтобы получить плоские вершины квадратной волны, вам нужно придать ему плоские уклоны треугольной волны на входе. Но это идеализированное поведение.

В качестве быстрого доказательства концепции, вот тем, что сигнализирует треугольник 60 Гц ± 1 В при прохождении через крышку связи с 1 UF при нагрузке 1 ком; он приближается к квадратной волне ± 200 мВenter image description here

Обратите внимание, что импеданс/сопротивление нагрузки здесь довольно мало; Если вы опустите его, скажем, на 100om, амплитуда выходной сигналы резко уменьшается. Вот как Copling Caps блокирует DC на динамиках/наушниках, потому что эти устройства имеют гораздо более низкий импеданс, чем 1 ком.

Если я смогу найти немного больше времени сегодня, я добавлю лучшую симуляцию, со стимулом лучшей формы вместо простой волны треугольника, но я не могу получить это от вашего среднего программного обеспечения для симулятора веб-схемы ...

Что ж, если вам повезло, вы можете получить одну из этих звуковых карт USB за 0,99 доллара, где производитель настолько сильно сокращал углы, что они не устанавливали сцепные колпачки. https://www.youtube.com/watch?v=4GNRZWFP7RE

Несомненно, вы не можете получить хорошее приближение квадратной волны. Звуковое оборудование преднамеренно увеличивается, и не сможет производить падение или растущее преимущество за пределами предполагаемого диапазона частот.

Вы можете аппроксимировать плохо деформированную квадратную волну, чередуя высокий и низкий код PCM (+max, -max) каждые n образцов.

Вы не можете создать настоящую квадратную волну, потому что она имеет бесконечную полосу пропускания. Вы можете получить разумное приближение квадратной волны, на частотах между, скажем, 10 Гц и 1 кГц (ниже 10 Гц у вас могут возникнуть проблемы с аналоговой частью вашей звуковой карты и т. Д., И выше 1 кГц станет все более неточным , поскольку вы можете воспроизвести только относительно небольшое количество гармоник).

TP Создание формы волны. Значения выборки будут чередовать между +/- некоторым значением, например, полная масштаба, которая будет -32767 и +32767 для 16 -битного потока PCM. Частота будет определена периодом этих образцов. Например, для показателя дискретизации 44,1 кГц, если вы сказали 100 образцов -32767, а затем 100 образцов +32767, то есть период = 200 образцов, то фундаментальная частота вашей квадратной волны будет 44,1 кГц / 200 = 220 Гц.

Я нашел приложение, которое я строю на нем.

http://www.blogger.com/blogger.g?

Вы можете сгенерировать нужный формат, и даже вам нужен шаблон.

Код использует Slimdx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top