Страница 13 из 14 Первая ... 311121314 Последняя
Показано с 241 по 260 из 277

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

  1. #1 Показать/скрыть первое сообщение.
    Завсегдатай
    Автор темы
    Аватар для E.Sokol
    Регистрация
    17.01.2015
    Адрес
    Урал
    Сообщений
    1,385

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

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

Название:	HarmonicSineGeneratorPro.png 
Просмотров:	667 
Размер:	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. #241
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,621

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

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    А мои примеры выше без сглаживания и в динамике выглядят точно так же, как и в статике.
    А что будет если снизить амплитуду сигнала до -130дБ?

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

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

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    другие предпочитают иметь дело с полным периодом, чтобы иметь полный контроль над происходящим
    Цель понятна, но для меня это звучит скорее как хак. Вы по сути делаете генератор белого шума менее случайным, чтобы получить удобные свойства при его взаимодействии со спектроанализатором. Ничего плохого, но в таком случае имеет смысл делать это явно и настраиваемо (ну или хотя бы отключаемо). Типа "вот с этой галкой шум случаен насколько возможно", "а вот с этой он имеет период столько-то семплов".
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    А что будет если снизить амплитуду сигнала до -130дБ?
    Чем ниже полка, тем больше шума. Чего ещё от 16-и бит хотеть? Ни разу не слышал о 16-битных ЦАПах с noiseratio в 130 дБ.

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

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Цель понятна, но для меня это звучит скорее как хак.
    А на мой взгляд - это подмешивание шума костыль А также измерения на чистых синусоидах, потому что в реальности никто не слушает чистые синусоиды. В реальности слушают спектрально насыщенные сигналы, а там суммарные искажения поболе будут. А спектрально насыщенный сигнал без подгона периодов не испытать никак - надо точно знать, где у нас в спектре были нули, чтобы мерить накопленный шум именно там. 1-битный LFSR опять же для этого идеально подходит, потому что при квантовании он не искажается, в отличие от синусоиды.

  5. #244
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,621

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

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    Чем ниже полка, тем больше шума.
    Речь не о полке (хотя и она с шейпером может быть ниже), а о воспроизведении сигнала малого уровня (меньше 1LSB квантованного сигнала), для чего и нужен дизер.

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    Чего ещё от 16-и бит хотеть?
    Например - хотеть увидеть на спектре синус уровнем -130дБ.

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

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

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    1-битный LFSR опять же для этого идеально подходит, потому что при квантовании он не искажается, в отличие от синусоиды.
    Я не спорю. Просто это должно быть явно, и желательно прямо из ГУЯ, без чтения инструкций ;)
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

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

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

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Я не спорю. Просто это должно быть явно, и желательно прямо из ГУЯ, без чтения инструкций ;)
    В этот генератор я никаких революционных идей добавлять не буду - только то, что по канону.

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Например - хотеть увидеть на спектре синус уровнем -130дБ.
    Шейпер 2-го порядка с этим прекрасно справится, особенно если sr в 96 кГц взять.

  8. #247
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,621

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

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    Шейпер 2-го порядка с этим прекрасно справится, особенно если sr в 96 кГц взять.
    А шум с линейной АЧХ тогда зачем?

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    А шум с линейной АЧХ тогда зачем?
    Чтобы видеть зависимость искажений от частоты, например. На чужих измерениях я нечто подобное наблюдал - когда появлялся "горб", а не просто гармоники от синусоид.

  10. #249
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,621

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

    Цитата Сообщение от E.Sokol Посмотреть сообщение
    Чтобы видеть зависимость искажений от частоты, например. На чужих измерениях я нечто подобное наблюдал - когда появлялся "горб", а не просто гармоники от синусоид.
    Тогда можно шум вообще не добавлять. SNR будет только лучше.

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

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

    Цитата Сообщение от tomtit Посмотреть сообщение
    нелинейный 3D клеточный автомат c длиной последовательности 2**27
    Расскажите о нём поподробнее, пожалуйста.

  12. #251

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

    работаю над дифф2se преобразователем, для Cosmos LPF, это дело само по себе довольно тонкое, потерять минимум с баланса на небаланс, симметрия которого непростая задача. Но пост не об этом, опять вылезла масштабная разница между двумя цифровыми генераторами REW vs Sokol. Я упоминал о ней раньше, но там были микроскопические значения, в районе -155-160дб, при том REW давал результат чище(но не в цифре, а уже после балансного цапа), но в сегодняшнем случае Н2 в REW поднимается аж вдвое до -144дб, против Solkol.. Уровень -144дб уже не микроскопический и я понятия не имею в чём прикол, что скажете?
    Импульсно всё, в этом мире бушующем..

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

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

    Давно забыл про этот генератор. Довольно скучная задача, если честно

  14. #253

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

    а мне нравится, мелкий, независимый от ффт. В REW, например, не сделать разный Fs для ацп и цапа, что часто необходимо. Таким образом, всю доводку я делаю на Sokol gen, а на REW проверяю. Только какая-то необъяснимая разница меж ними есть.
    Импульсно всё, в этом мире бушующем..

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

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

    Цитата Сообщение от IVX Посмотреть сообщение
    Только какая-то необъяснимая разница меж ними есть.
    Так выяснили же уже разницу. Я использовал чужое SDK для быстрого вывода звука через тип данных float, REW же наверняка напрямую в целых числах пишет. С тех пор многое изменилось и у меня появился собственный SDK, в последний раз мы тут обсуждали дизеринг, я думал, как его оптимально реализовать, и решил внедрить его в своём SDK непосредственно в модуль устройства вывода, и уже только после этого имело смысл переводить этот генератор на новый звуковой движок.

    Ну а потом снова увлёкся музыкой, обзавёлся синтезатором, двумя Ибанезами с 7-ю и 9-ю струнами, и приоритеты в хобби-проектах слегка поменялись.

  16. #255

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

    штука в том, что этой разницы на Н2 абсолютно нет в балансном выходе, а на SE очень заметная. С этим можно фокусы показывать, вот дифф выход, там всё красиво, а вот оу с 4мя резисторами делает из баланса небаланс и там появляется разница..
    Импульсно всё, в этом мире бушующем..

  17. #256
    Завсегдатай Аватар для tomtit
    Регистрация
    23.06.2009
    Адрес
    пгт.Торонтовка
    Возраст
    66
    Сообщений
    1,004

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

    Тоже наблюдаю какие-то странные вещи с гармониками, то они есть, то их нет абсолютно. Списывал на неидеальность и прогрев электроники. Но сейчас уже готов начать писать свой софт для измерений, когда выйду на пенсию.. Float32 для DSP не годится, мало значащих битов. REW тоже его использует ЕМНИС, как основной формат.

    Долго не заходил в эту ветку, заметил вопрос про 3-д генератор шума. Я уже не помню деталей, взял идею и правило из какой-то статьи в интернете. Нашел свой исходник для devcpp компилятора.


    Скрытый текст

    #include <stddef.h>

    #include <stdint.h>

    #define N 4
    #define M (N-1)
    #define SEQ_LEN (1u<<27)

    static const unsigned char rule[16] = {
    1, 1, 0, 1, // B
    0, 0, 0, 1, // 8
    0, 0, 1, 0, // 4
    1, 1, 1, 0 // 7
    }; // 0x748B

    static uint8_t q[N][N][N];

    static void InitRng(uint64_t seed)
    {
    int x, y, z;

    for (z = 0; z <= M; z++)
    for (y = 0; y <= M; y++)
    for (x = 0; x <= M; x++)
    {
    q[z][y][x] = (uint8_t) (seed & 1);
    seed >>= 1;
    }
    }

    static uint64_t UpdateRng(int osr)
    {
    uint8_t p[N][N][N];

    int x, y, z;

    uint64_t r = 0;

    while(--osr >= 0)
    {
    for (z = 0; z <= M; z++)
    {
    for (y = 0; y <= M; y++)
    for (x = 0; x <= M; x++)
    {
    int i = 0;

    i |= q[(z + 1) & M][(y + 1) & M][(x + 1) & M] ? 1 : 0;
    i |= q[(z + 1) & M][(y - 1) & M][(x + 0) & M] ? 2 : 0;
    i |= q[(z + 0) & M][(y + 0) & M][(x + 0) & M] ? 4 : 0;
    i |= q[(z - 1) & M][(y + 0) & M][(x - 1) & M] ? 8 : 0;
    p[z][y][x] = rule[i];
    }
    }
    for (z = M; z >= 0; z--)
    for (y = M; y >= 0; y--)
    for (x = M; x >= 0; x--)
    {
    q[z][y][x] = p[z][y][x];
    if (osr == 0)
    r = (r << 1) | (q[z][y][x] ? 1 : 0);
    }
    }
    return r;
    }

    int rpdf32(int npt, int osr, double scl, double *y)
    {
    int n, k;

    int32_t ii;

    union
    {
    uint64_t v;
    uint32_t u[2];
    } r;

    uint64_t r0 = 0x86d0d2bcc74b5415;

    for (n = SEQ_LEN / osr; npt > 0; npt -= n)
    {
    n = npt > n ? n : npt;
    InitRng(r0);
    for (k = 0; k < n; k++)
    {
    r.v = UpdateRng(osr);
    ii = (int32_t) (r.u[0] ^ r.u[1]);
    *y++ = scl * ii;
    }
    }
    return 0;
    }

    /* EOF */
    [свернуть]
    Последний раз редактировалось tomtit; 17.12.2024 в 18:32.

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

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

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

  19. #258

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

    Цитата Сообщение от Alex Посмотреть сообщение
    А если два REW запустить?
    Если мне память не изменяет, он при установке спрашивает разрешить ли multiple instances.
    не пробовал, да и окон каждый откроет кучу, что неудобно. Кроме того, любое быстрое нарушение связи с юсби дивайсом, у новых версий REW вызывает рвоту сообщениями об ошибке, которые надо закрывать индивидуальным кликом и потом снова выбирать цап в списке устройств, ну и перенажать плэй, а в Sokol просто перенажать плэй. Удивительно, но ещё год-два назад REW работал так же, но джон за каким-то диаволом теперь всё это усложнил.
    Импульсно всё, в этом мире бушующем..

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

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

    Цитата Сообщение от tomtit Посмотреть сообщение
    Долго не заходил в эту ветку, заметил вопрос про 3-д генератор шума. Я уже не помню деталей, взял идею и правило из какой-то статьи в интернете. Нашел свой исходник для devcpp компилятора.
    Ясно, клеточный автомат. За код спасибо.

  21. #260

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

    Цитата Сообщение от tomtit Посмотреть сообщение
    Тоже наблюдаю какие-то странные вещи с гармониками, то они есть, то их нет абсолютно. Списывал на неидеальность и прогрев электроники.
    неужто у тебя SE выход?? Там же в сто раз труднее обеспечить то же, что в балансе получится на изи.
    Импульсно всё, в этом мире бушующем..

Страница 13 из 14 Первая ... 311121314 Последняя

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

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

Ваши права

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