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






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

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

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

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

В П В С Ч П С
     12
3456789
101112 13 141516
17181920212223
24252627282930
31      

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

Официальный сайт 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/

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

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


Ahrefs (1)

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

  • Фотография
    cyber01
    Сегодня, 23:03
  • Фотография
    DikiyKot
    Сегодня, 21:59
  • Фотография
    FelixBanan
    Сегодня, 17:00
  • Фотография
    ECS
    Сегодня, 15:23
  • Фотография
    vx13
    Сегодня, 14:18
  • Фотография
    Kid
    Сегодня, 14:17
  • Фотография
    Vestalfa
    Сегодня, 13:53
  • Фотография
    serafim
    Вчера, 17:09
  • Фотография
    HixOff
    Вчера, 15:06
  • Фотография
    Quant
    09 дек 2017 - 17:14
  • Фотография
    Litvinov
    08 дек 2017 - 21:11
  • Фотография
    VeLLeSSS
    08 дек 2017 - 10:21
  • Фотография
    MrHein
    08 дек 2017 - 00:13
  • Фотография
    Zabqer
    04 дек 2017 - 15:28
  • Фотография
    solikos
    04 дек 2017 - 14:30
  • Фотография
    TapKo4eB
    03 дек 2017 - 19:00
  • Фотография
    SDV
    03 дек 2017 - 18:19
  • Фотография
    kirill0743
    03 дек 2017 - 13:39
  • Фотография
    DimaZCOM
    01 дек 2017 - 19:36
  • Фотография
    Quinstant
    01 дек 2017 - 02:12
  • Фотография
    fasadik
    30 ноя 2017 - 22:25
  • Фотография
    lokin135
    28 ноя 2017 - 14:22
  • Фотография
    LeshaInc
    27 ноя 2017 - 14:41
  • Фотография
    Sploom
    27 ноя 2017 - 13:08
  • Фотография
    electronic_steve
    27 ноя 2017 - 10:10
  • Фотография
    BrightYC
    27 ноя 2017 - 02:45
  • Фотография
    folder
    25 ноя 2017 - 17:34
  • Фотография
    Deadlyy
    25 ноя 2017 - 00:56
  • Фотография
    Dancho
    24 ноя 2017 - 22:35
  • Фотография
    mrlobaker
    23 ноя 2017 - 09:33
  • Фотография
    HeroBrine1st
    22 ноя 2017 - 21:12
  • Фотография
    Appo
    22 ноя 2017 - 21:09
  • Фотография
    Sharplook
    22 ноя 2017 - 17:06
  • 22 ноя 2017 - 00:16
  • Фотография
    etS
    21 ноя 2017 - 23:39
  • Фотография
    ivan52945
    21 ноя 2017 - 20:39
  • Фотография
    QWERY
    21 ноя 2017 - 15:31
  • Фотография
    GamerCool
    21 ноя 2017 - 09:11
  • Фотография
    andrgysev02
    20 ноя 2017 - 20:02
  • Фотография
    MeXaN1cK
    20 ноя 2017 - 14:54
  • Фотография
    qwertyMAN
    19 ноя 2017 - 14:39
  • Фотография
    DarthWirthe
    19 ноя 2017 - 13:55
  • Фотография
    Birard
    18 ноя 2017 - 09:43
  • Фотография
    rrr_game
    18 ноя 2017 - 00:26
  • Фотография
    Koteyk0o
    17 ноя 2017 - 18:24
  • Фотография
    RccHD
    17 ноя 2017 - 00:21
  • Фотография
    Arseniy10
    15 ноя 2017 - 20:25
  • Фотография
    Kazak11
    15 ноя 2017 - 16:11
  • Фотография
    FluttyProger
    14 ноя 2017 - 21:25
  • Фотография
    Zer0Galaxy
    14 ноя 2017 - 09:51

Лицензия

Яндекс.Метрика