Перейти к содержимому






Фотография
* * * * * 2 голосов

Sound card / звуковые волны, модуляция

Написано Fingercomp , в Computronics, Add-ons, OpenComputers, Programming in Lua, Tutorials, Minecraft Mods, Sound Card 13 Май 2017 · 643 просмотров

sound card модуляция Computronics CX Lua OpenComputers

Продолжаю рассказывать про Computronics и, в частности, про офигенную звуковую карточку из этого мода. На очереди модуляция: частотная и амплитудная. Помимо этого восполняю долг по основам.

 

Юзать будем мою прогу synth, которую я недавно зарелизил. Она здесь невероятно поможет.

 

Звуковая волна
Вы же знаете, как выглядит звуковая волна?

 

Изображение

 

Вот, например, синусоида. Как видно, здесь есть некоторый фрагмент, который повторяется несколько раз. Частота показывает, сколько раз в секунду этот фрагмент повторяется, и измеряется в герцах (Гц или Hz). Чем выше частота, тем больше волна "сжата", скажем так, с боков. Вот как выглядят три синусоиды с разными частотами: 110 Гц, 220 Гц, 440 Гц - на одинаковом масштабе.

 

ИзображениеИзображениеИзображение

 

Кроме частоты, звуковая волна характеризуется таким параметром, как амплитудой. Это, скажем так, расстояние от самого нижнего значения до самого верхнего значения волны. Чем больше амплитуда, тем громче звук. Мы примем за двойку амплитуду сигнала на звуковой карте при максимальной громкости.
При нулевой амплитуде на графике будет прямая линия вдоль горизонтальной оси.

 

Изображение

 

При максимальной громкости у синусоиды пиковые значения будут в точках +1 и -1. Они плавно сменяются. Прикольно, да.

 

Синусоиды - это офигенные штуки, но на них клин светом не сошёлся. Из основных типов волн, помимо синусоид, есть меандр, треугольная волна и пилообразная. Они в таком же порядке изображены на рисунках ниже.

 

ИзображениеИзображениеИзображение

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

 

На самом деле, их можно представить в виде набора бесконечного числа синусоид, о чём когда-то поведал Фурье, но мы с этим заморачиваться не будем: раскладывать на синусоиды в звуковой карте не принято. Поведали об этом для красного словца - и то хорошо.

 

Теперь, когда рассказал про основы, можно переходить к более весёлым и сложным вещам. То бишь к модуляции.

 

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

 

Амплитудная модуляция
Как я сказал, для модуляции нужны два сигнала: несущий и сам модулятор. Поэтому здесь и далее я привожу на рисунках сразу три графика: несущий сигнал, модулирующий сигнал и результат модуляции.
Например, выставим две синусоиды с частотой 440 Гц.

 

Изображение

 

Итак, амплитудная модуляция - это умножение одного сигнала на другой.

 

A(t) = C(t) × M(t),

 

где t - время, C - функция, возвращающая значение несущей волны на моменте времени t, M - то же, но для модулятора.
Однако не всё так просто. Перед умножением к значениям с модулятора прибавляется единица. Получается, что самая верхняя точка будет на +2, а самая нижняя - на 0. Иными словами, волна перенесена вверх.

 

Изображение

Сигнал модулятора справа переносится вверх, как на графике слева.

 

На низких частотах - до 20-30 Гц, откуда начинается граница слышимого человеком звука, - графики будут выглядеть как-то так, медленно увеличивая амплитуду от 0 до 4 и обратно.

 

Изображение

 

И звучать оно будет как увеличение и уменьшение громкости (количество таких увеличений и уменьшений равно частоте модулятора).

 

Однако когда частота модулятора становится больше, наблюдаем вот такую картину (частота модулятора равна здесь 330 Гц).

 

Изображение

 

Если прислушаться, то станет заметно, что одновременно будто бы проигрываются три звуковых волны. Одна волна имеет такую же амплитуду и частоту, как и несущая. Две другие частоты, задающие боковую полосу частот (диапазон частот, сконцентрированных рядом с какой-либо), находятся так:

 

f1 = |c - m|,

f2 = c + m,

 

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

 

В звуковой карте можно поставить амплитудный модулятор следующим образом: sound.setAM(carrierChan: number, modulatorChan: number).

 

Амплитудная модуляция - забавная вещь, и в то же время тут очень трудно подобрать что-то интересное и красивое. Поэтому переходим к частотной модуляции - там веселья дофига.

 

Частотная модуляция
В частотной модуляции модулятор изменяет частоту несущей волны. Как ни странно.
Почему частотная модуляция уделывает амплитудную? Здесь может быть гораздо больше боковых частот. И потому звучать оно может гораздо круче.

 

При когда значение на модуляторе увеличивается, повышается и частота на несущей волне.

 

Звуковая карта поддерживает индекс модуляции. Он задаёт максимальное изменение частоты несущей волны. При индексе, равном 100, частота несущей волны может меняться на 100 Гц вверх и на 100 Гц вниз. Если индекс равен 1000, то частота меняться может на 1000 Гц вверх и на 1000 Гц вниз. Ну и так далее.
Иными словами, индекс задаёт силу модуляции.

 

Если частота модулятора будет очень низкой (например, 4 Гц), то получим что-то вроде сирены.

 

Изображение

c = 440 Гц; m = 4 Гц; i = 200

 

С повышением частоты получим вибрирующий звук. И потом услышим дополнительные частоты.

 

Изображение

c = 220 Гц; m = 880 Гц; i = 660

 

Как видно, получившаяся волна получилась довольно сложной.

 

Установить модулятор в звуковой карте можно с помощью функции sound.setFM(carrierChan: number, modulatorChan: number, index: number).

 

И не забывайте про ADSR-огибающую: из однообразного тона можно получить довольно интересный звук. Как работает эта штука, я рассказывал.

 

 

 

На этом всё. Из всех фич остался неразобранным лишь шум LFSR, но там штука очень и очень странная и непонятная.

 

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

Ну и используйте прогу synth, чтобы удобно было изучать звуковую карту.






Все это довольно неплохо, но модуляция довольно простая тема, да и нагуглить не долго.

Можно, конечно, собрать генератор семплов и играть чиптюн, но это довольно скучно.

А вот как прикрутить фурье-функцию, чтобы можно было работать с несколькими картами, тут придется жонглировать бензопилами.

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

Вот как выглядят три синусоиды с разными частотами: 110 Гц, 220 Гц, 40 Гц - на одинаковом масштабе.

Циферка потерялась.

Циферка потерялась.

Циферка нашлась и вернулась домой.


Обратные ссылки на эту запись [ URL обратной ссылки ]

Обратных ссылок на эту запись нет

Последние версии

Стабильная: 1.7.0
Последняя: 1.7.0

Искать в моем блоге

Новые комментарии

Октябрь 2017

В П В С Ч П С
1234567
891011121314
1516171819 20 21
22232425262728
293031    

Полезные ссылки

Официальный сайт OpenComputers

http://oc.cil.li/

 

Официальный форум OpenComputers

http://oc.cil.li/index.php?/index

 

Репозиторий OpenComputers на ГитХабе

https://github.com/M...s/OpenComputers

 

Последние релизы OpenComputers

https://github.com/M...puters/releases

 

Jenkins-сервер

http://ci.cil.li/job...s-dev-MC1.7.10/
 

Репозиторий OpenPrograms

https://github.com/OpenPrograms

 

Репозиторий моих программ

https://github.com/O...rcomp-Programs/

0 посетителей

0 пользователей, 0 гостей, 0 анонимных

Последние посетители

  • Фотография
    ECS
    Сегодня, 01:38
  • Фотография
    ivan52945
    Вчера, 23:33
  • Фотография
    JLevi
    Вчера, 17:10
  • Фотография
    vx13
    18 окт 2017 - 20:52
  • Фотография
    Strateg
    18 окт 2017 - 19:48
  • Фотография
    NEO
    18 окт 2017 - 19:36
  • Фотография
    Miroshka
    18 окт 2017 - 08:48
  • Фотография
    Klotske
    17 окт 2017 - 20:49
  • Фотография
    DarthWirthe
    17 окт 2017 - 20:35
  • Фотография
    cyber01
    17 окт 2017 - 14:50
  • Фотография
    Zer0Galaxy
    17 окт 2017 - 09:00
  • Фотография
    Kid
    17 окт 2017 - 06:39
  • Фотография
    Dancho
    16 окт 2017 - 20:43
  • Фотография
    LeshaInc
    16 окт 2017 - 20:09
  • Фотография
    qwertyMAN
    16 окт 2017 - 20:05
  • Фотография
    Quant
    16 окт 2017 - 18:05
  • Фотография
    electronic_steve
    16 окт 2017 - 16:41
  • Фотография
    Doob
    16 окт 2017 - 15:14
  • Фотография
    Sergey_YT555
    16 окт 2017 - 11:47
  • Фотография
    _Star_Craft_
    15 окт 2017 - 21:55
  • Фотография
    Arseniy10
    15 окт 2017 - 20:46
  • Фотография
    FluttyProger
    15 окт 2017 - 15:13
  • Фотография
    MeXaN1cK
    14 окт 2017 - 22:58
  • Фотография
    mrGreen
    14 окт 2017 - 20:14
  • Фотография
    ZEnaR
    09 окт 2017 - 20:39
  • Фотография
    BarBoss
    09 окт 2017 - 19:02
  • Фотография
    Blain
    09 окт 2017 - 16:51
  • Фотография
    AnothRt
    09 окт 2017 - 12:41
  • Фотография
    Totoro
    08 окт 2017 - 14:57
  • Фотография
    Appo
    08 окт 2017 - 14:37
  • Фотография
    BoberMod
    07 окт 2017 - 21:38
  • Фотография
    Lazerix
    07 окт 2017 - 15:45
  • Фотография
    Kartograf
    07 окт 2017 - 14:19
  • Фотография
    Psix3581
    07 окт 2017 - 13:58
  • Фотография
    krovyaka
    03 окт 2017 - 20:33
  • Фотография
    RccHD
    03 окт 2017 - 12:57
  • Фотография
    Litvinov
    02 окт 2017 - 13:06
  • Фотография
    theCPU
    01 окт 2017 - 15:55
  • Фотография
    Stirn
    01 окт 2017 - 09:40
  • Фотография
    swg2you
    01 окт 2017 - 05:41
  • Фотография
    monkey
    29 сен 2017 - 12:37
  • Фотография
    Savex
    28 сен 2017 - 19:15
  • Фотография
    Rurla
    27 сен 2017 - 19:50
  • Фотография
    Sloth96
    25 сен 2017 - 00:53
  • Фотография
    SDV
    21 сен 2017 - 20:33
  • Фотография
    Laine_prikol
    21 сен 2017 - 15:19
  • Фотография
    serafim
    20 сен 2017 - 22:18
  • Фотография
    dov157
    18 сен 2017 - 14:18
  • Фотография
    rrr_game
    17 сен 2017 - 20:59
  • Фотография
    nikit356
    16 сен 2017 - 20:25

Лицензия