Страница 1 из 13 12311 ... Последняя
Показано с 1 по 20 из 250

Тема: Генератор синуса с гармониками

  1. #1
    Завсегдатай
    Автор темы
    Аватар для E.Sokol
    Регистрация
    17.01.2015
    Адрес
    Урал
    Сообщений
    1,364

    По умолчанию Генератор синуса с гармониками

    Существует концепция измерения, при которой к синусу подмешиваются его гармоники с небольшой амплитудой в противофазе. Такую задачу и решает эта программа. Помимо гармоник (которые можно выборочно отключать) есть ещё три дополнительные частоты для вспомогательных задач. Также можно округлять частоту синусоиды к значению, нацело укладывающуюся в стандартные размеры FFT (2048/4096/etc), чтобы избежать влияния оконных функций.
    Нажмите на изображение для увеличения. 

Название:	HarmonicSineGeneratorPro.png 
Просмотров:	634 
Размер:	18.5 Кб 
ID:	397868
    Все значения громкости относительно Master`а, режим auto дополнительно подгоняет уровень сигнала под 0 дБ, ориентируясь на измерения пиковых значений при воспроизведении.

    Драйвер вывода звука пока только WASAPI, shared/exclusive режимы и выбор частоты дискретизации присутствуют. В режиме shared может происходить неявная передискретизация, если частота дискретизации не поддерживается устройством. В режиме exclusive поддерживаются только частоты от драйвера, в остальных случаях появится сообщение об ошибке.

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

    Сама программа: HarmonicSineGeneratorPro.v.2.1.zip, для работы может потребоваться установка .NET Framework 4.
    Последний раз редактировалось E.Sokol; 24.05.2021 в 21:15.

  2. #2
    Завсегдатай
    Регистрация
    03.05.2010
    Сообщений
    3,532

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    Сама программа: Вложение 397688

    Порой очень, очень нужная штука!



    Не так давно пытался запустить что-нибудь с подобным функционалом (обязательное условие - чтоб был адекватный вывод звука) и не нашел вообще ничего доступного, что могло бы работать под Win7.
    Пришлось выходить из положения подручными средствами.

    Функционально только одно замечание - 4 гармоники - это реально совсем мало.
    хотя-бы еще парочка нужна для приведения спектров к употребительному виду.

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

  3. #3
    Завсегдатай
    Автор темы
    Аватар для E.Sokol
    Регистрация
    17.01.2015
    Адрес
    Урал
    Сообщений
    1,364

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от ViktKors Посмотреть сообщение

    Порой очень, очень нужная штука!
    Спасибо!

    Цитата Сообщение от ViktKors Посмотреть сообщение
    Функционально только одно замечание - 4 гармоники - это реально совсем мало.
    Можно и больше, 4 было в техзадании) Тут основная сложность - как компактно и красиво расположить все компоненты.

    Цитата Сообщение от ViktKors Посмотреть сообщение
    В принципе, для фазы в подобных случаях точность в 1 градус обычно более чем достаточна, но это конечно дело вкуса.
    А для амплитуды? Если на каждую гармонику оставить только по две ручки, их можно побольше напихать.

  4. #4
    Частый гость Аватар для ANHO
    Регистрация
    15.08.2009
    Адрес
    Липецк
    Возраст
    58
    Сообщений
    364

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    Можно и больше, 4 было в техзадании) Тут основная сложность - как компактно и красиво расположить все компоненты.
    А для амплитуды? Если на каждую гармонику оставить только по две ручки, их можно побольше напихать.
    Может быть добавить вкладок дополнительно? На первой вкладке 3-4 гармоники, на второй ещё 3-4.

  5. #5
    Завсегдатай
    Регистрация
    03.05.2010
    Сообщений
    3,532

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    А для амплитуды? Если на каждую гармонику оставить только по две ручки, их можно побольше напихать.
    Практически для амплитуды достаточно шага порядка 0.1 дБ. Лучше обычно не имеет смысла по причине не идеальной стабильности нелинейностей тракта.
    В конце концов 0.1 дБ - это почти 40 дБ подавления гармоники - это много, остальная "трава" обычно уже сравнима.

    Но гипотетически, не исключено, что кто-то захочет больше точности. На этот случай я бы предусмотрел возможность прямого ввода с двумя знаками после запятой, а на "ручках" оставил бы 0.1 дБ.




    Далее сугубое ИМХО. Возможно кто-то, кто по работе имеет дело с подобными "крутилками", считает иначе:

    ИМХО от "ручек" тут толку немного, пользоваться ими не очень удобно (нет точной привязки к конкретному значению), а результата все равно порой приходится ждать по нескольку десятку секунд (пока длинное ффт просчитает, а на большой точности еще много дольще, когда нужно еще и усреднения дождаться..) Мышкой двигать уровень получается очень неудобно - подвинул чуть, подождал пол-минуты, стараясь не шевельнуть мышку, потом сдвинул ее чуть-чуть, стараясь и опять ждешь минуту не шевелясь.
    ИМХО обычное перещелкивание "вниз/вверх" нажатием на треугольнички оказывается удобнее, а реально чаще всего пользуешься прямым вводом числа. В этом смысле две окошка (грубо+точно) еще менее удобно.

  6. #6
    Старый знакомый Аватар для minimalman
    Регистрация
    27.02.2021
    Сообщений
    838

    По умолчанию Re: Генератор синуса с гармониками


    Offтопик:
    Цитата Сообщение от E.Sokol Посмотреть сообщение
    Существует концепция измерения, при которой к синусу подмешиваются его гармоники с небольшой амплитудой в противофазе.
    Можно для чайников объяснить, зачем? Компенсировать нелинейности ЦАПа?

  7. #7
    Завсегдатай
    Автор темы
    Аватар для E.Sokol
    Регистрация
    17.01.2015
    Адрес
    Урал
    Сообщений
    1,364

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от ViktKors Посмотреть сообщение
    ИМХО от "ручек" тут толку немного, пользоваться ими не очень удобно
    "Крутилки" - это мой личный фетиш) Но тоже понимаю, что у кого-то могут быть противоположные ощущения. Можно сделать версию pro с чисто текстовым вводом на decimal компонентах. Но необходимо точно определить
    а) количество гармоник
    б) шаг приращения при нажатии мышкой для амплитуды
    в) шаг приращения при нажатии мышкой для фазы
    г) нужны ли ещё частоты и сколько
    д) нужно ли округление для FFT
    е) нужна ли автоматическая подстройка уровня
    ж) количество знаков после запятой

    ---------- Сообщение добавлено 12:24 ---------- Предыдущее сообщение было 12:23 ----------

    Цитата Сообщение от minimalman Посмотреть сообщение
    Можно для чайников объяснить, зачем? Компенсировать нелинейности ЦАПа?
    Вопрос не ко мне, я просто сделал то, что попросили.

  8. #8
    Частый гость Аватар для s_valentin
    Регистрация
    14.12.2006
    Адрес
    Магнитогорск
    Возраст
    44
    Сообщений
    141

    По умолчанию Re: Генератор синуса с гармониками

    Респект! Сподвигнул брательника т.к. реально ни чего удобного для данной задачи нет. За 5-10мин "очистил" спектр.
    Поюзал:
    - 0.1дБ по амплитуде - более чем достаточно, 1 градус по фазе - также.
    - количество 4-х гармоник иногда не достаточно, причем "палки" могут быть допустим 2,3,5,8,9. Чтобы не загромождать интерфейс, можно количество генераторов гармоник сделать штук 6-8, но предусмотреть цифровое поле для ввода номера гармоники
    - на счет "крутилок". Для амплитуды - да, практически бесполезны. Т.к. в первый заход компенсации вбиваешь цифровое значение амплитуды гармоники по измеренной. А далее точная подстройка вверх/вниз с шагом 0.1дБ. А вот с фазой - я бы "крутилки" оставил. При первом заходе ставлю ФФТ поменьше (насколько возможно, для скорости) и грубо выставляешь фазу. А вот затем уже увеличиваешь размер ФФТ и подгоняешь точнее.
    - в установившемся (тепловом) режиме гармоники перестают "плавать" и, в принципе, настройка компенсации сохраняется от измерения к измерению (на том-же уровне сигнала). Т.е. имеет смысл сохранять настройки в файл.

    ---------- Сообщение добавлено 12:37 ---------- Предыдущее сообщение было 12:32 ----------

    minimalman, для проведения достаточно точных измерений искажений простыми (дешевыми) методами. Очень подробно описывал Nick в теме про ZD-50. Общий смысл - компенсация искажений ЦАП программным (введением предискажений в сигнал) методом. С режектором (для уменьшения искажений АЦП) этот метод работает вообще замечательно. Один минус - время на настройку компенсации. Но с этой программой - время вполне приемлимое.

  9. #9
    Завсегдатай
    Автор темы
    Аватар для E.Sokol
    Регистрация
    17.01.2015
    Адрес
    Урал
    Сообщений
    1,364

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от s_valentin Посмотреть сообщение
    имеет смысл сохранять настройки в файл.
    Сейчас настройки сохраняются при выходе. Хотя, конечно, более правильно сохранять их явным образом как пресеты.

  10. #10
    Частый гость Аватар для s_valentin
    Регистрация
    14.12.2006
    Адрес
    Магнитогорск
    Возраст
    44
    Сообщений
    141

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    "Крутилки" - это мой личный фетиш) Но тоже понимаю, что у кого-то могут быть противоположные ощущения. Можно сделать версию pro с чисто текстовым вводом на decimal компонентах. Но необходимо точно определить
    а) количество гармоник
    б) шаг приращения при нажатии мышкой для амплитуды
    в) шаг приращения при нажатии мышкой для фазы
    г) нужны ли ещё частоты и сколько
    д) нужно ли округление для FFT
    е) нужна ли автоматическая подстройка уровня
    ж) количество знаков после запятой

    ---------- Сообщение добавлено 12:24 ---------- Предыдущее сообщение было 12:23 ----------

    Вопрос не ко мне, я просто сделал то, что попросили.
    а) 8-10
    б) 0.1дБ
    в) 1 градус
    г) ?
    д) опционально
    е) нет. но нужна индикация если вылетаем выше 0дБ (подсветить красным и рядом отображать амплитуду суммы всех сигналов)
    ж) для частоты 3, для амплитуд 2, для фазы 1

    з) для маркеров сделать 3 генератора. задание частот и амплитуд как в ж)

  11. #11
    Завсегдатай
    Автор темы
    Аватар для E.Sokol
    Регистрация
    17.01.2015
    Адрес
    Урал
    Сообщений
    1,364

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от s_valentin Посмотреть сообщение
    г) ?
    Это я про маркеры

  12. #12
    Завсегдатай
    Автор темы
    Аватар для E.Sokol
    Регистрация
    17.01.2015
    Адрес
    Урал
    Сообщений
    1,364

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от s_valentin Посмотреть сообщение
    для частоты 3
    Это значит, что нажав один раз на стрелочку, значение изменится только на одну тысячную: 1000.000 -> 1000.001. Это именно то, что требуется?

  13. #13
    Завсегдатай Аватар для Meta|_
    Регистрация
    08.03.2005
    Адрес
    Северная Голландия
    Возраст
    41
    Сообщений
    2,038

    По умолчанию Re: Генератор синуса с гармониками

    E.Sokol,
    Иногда очень нужная вещь. Пару раз сам чуть не взялся что-то такое писать.
    Цитата Сообщение от E.Sokol Посмотреть сообщение
    Можно сделать версию pro с чисто текстовым вводом на decimal компонентах
    Ещё круче было бы иметь вообще консольный вариант с конфигом и/или передачей параметров в аргументах командной строки, тогда не придётся ограничивать количество настроек. Но тогда будет неудобно крутить настройки в realtime.

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

    ЗЫ: Под linux, как я понимаю, не соберётся...
    Даже под wine с ходу не взлетело.

    ---------- Сообщение добавлено 13:07 ---------- Предыдущее сообщение было 12:53 ----------

    E.Sokol, кстати, маркер-тоны под БПФ подстраиваются если галку поставить?
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

  14. #14
    Завсегдатай
    Автор темы
    Аватар для E.Sokol
    Регистрация
    17.01.2015
    Адрес
    Урал
    Сообщений
    1,364

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    ЗЫ: Под linux, как я понимаю, не соберётся...
    Даже под wine с ходу не взлетело.
    Так WASAPI же. Даже .NET Core не спасёт. Но стопудова консольные решения под Линукс уже есть - Csound как минимум.

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    маркер-тоны под БПФ подстраиваются если галку поставить?
    Нет. Но зная нужную частоту, её можно Ctrl+V после двойного щелчка.

    ---------- Сообщение добавлено 15:25 ---------- Предыдущее сообщение было 15:22 ----------

    Или тоже можно подстраивать, или ещё одну галочку завести. Не знаю, как правильнее.

    ---------- Сообщение добавлено 17:49 ---------- Предыдущее сообщение было 15:25 ----------

    Цитата Сообщение от ViktKors Посмотреть сообщение
    ИМХО от "ручек" тут толку немного, пользоваться ими не очень удобно (нет точной привязки к конкретному значению), а результата все равно порой приходится ждать по нескольку десятку секунд (пока длинное ффт просчитает, а на большой точности еще много дольще, когда нужно еще и усреднения дождаться..) Мышкой двигать уровень получается очень неудобно - подвинул чуть, подождал пол-минуты, стараясь не шевельнуть мышку, потом сдвинул ее чуть-чуть, стараясь и опять ждешь минуту не шевелясь.
    ИМХО обычное перещелкивание "вниз/вверх" нажатием на треугольнички оказывается удобнее, а реально чаще всего пользуешься прямым вводом числа. В этом смысле две окошка (грубо+точно) еще менее удобно.
    Забыл написать - кнопками ←↑↓→, Pg Up, Pg Dn с клавиатуры тоже крутить можно, дискретно. И непосредственное значение вбивать тоже можно. Мышкой - это для скорости, а крутилка заодно ещё и роль стрелочного индикатора выполняет.

  15. #15
    Старый знакомый Аватар для minimalman
    Регистрация
    27.02.2021
    Сообщений
    838

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от s_valentin Посмотреть сообщение
    Общий смысл - компенсация искажений ЦАП программным (введением предискажений в сигнал) методом.
    А чем это настраивать? АЦП классом выше? Тогда ведь можно сделать прожку, чтоб она автоматом всё выравнивала в лупе, будет ли такой "обновлённый" клирфактор сохраняться во времени?
    Или компенсируются гармоники связки ЦА/АЦП, для удобства чисто?
    Последний раз редактировалось minimalman; 21.05.2021 в 16:26.

  16. #16
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,421

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от minimalman Посмотреть сообщение
    Или компенсируются гармоники связки ЦА/АЦП, для удобства чисто?
    Если АЦП без режектора - да, поэтому без него смысла в таком генераторе мало.

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Ну и следующая хотелка - уметь генерить сумму синусов.
    Мультитон, в смысле?
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  17. #17
    Завсегдатай Аватар для Meta|_
    Регистрация
    08.03.2005
    Адрес
    Северная Голландия
    Возраст
    41
    Сообщений
    2,038

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    Или тоже можно подстраивать, или ещё одну галочку завести.
    Вторую галку вряд ли надо. Трудно себе представить, кому понадобится включить одну галку, но не включать вторую.
    Цитата Сообщение от Alex Посмотреть сообщение
    Мультитон, в смысле?
    Ага.

    ---------- Сообщение добавлено 17:04 ---------- Предыдущее сообщение было 16:57 ----------

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    Csound как минимум.
    Спасибо, тоже хорошая штука.
    Кстати, похоже, есть под все распространённые ОС включая мобильные: https://csound.com/download.html

    ---------- Сообщение добавлено 17:06 ---------- Предыдущее сообщение было 17:04 ----------

    Цитата Сообщение от Alex Посмотреть сообщение
    Если АЦП без режектора - да, поэтому без него смысла в таком генераторе мало.
    Если заморочиться с выравниванием уровней и импедансов, то гармоники АЦП тоже можно компенсировать. Но это геморрой-геморрой, конечно...
    Последний раз редактировалось Meta|_; 21.05.2021 в 17:39.
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

  18. #18
    Завсегдатай Аватар для maxssau
    Регистрация
    15.08.2015
    Адрес
    Самара
    Возраст
    40
    Сообщений
    2,624

    По умолчанию Re: Генератор синуса с гармониками

    А есть результаты в железе? Идея хорошая
    _________________
    Евгений

  19. #19
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,421

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Ага.
    Ну если на компе, то АРТА умеет генерить мультитон.
    А свой автономный Генератор тоже научил

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Если заморочиться с выравниванием уровней и импедансов, то гармоники АЦП тоже можно компенсировать.
    Зависит от задачи.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  20. #20
    Завсегдатай
    Автор темы
    Аватар для E.Sokol
    Регистрация
    17.01.2015
    Адрес
    Урал
    Сообщений
    1,364

    По умолчанию Re: Генератор синуса с гармониками

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Ну и следующая хотелка - уметь генерить сумму синусов.
    Тоже делал такое, но только в виде мат. модели. Частоты, естественно, не задаются вручную - это слишком банально. Задаётся начальная и конечная частоты, между которыми в логарифмическом масштабе распределяется заданное количество частот. Идея, кстати, тоже Валентина) Ещё он также предлагал округлять их к простым числам, но тут уже возникают неоднозначности.

Страница 1 из 13 12311 ... Последняя

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •