Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Программирование звука музыкальных инструментов (2 стр)

Программирование звука музыкальных инструментов (2 стр)

Поделиться

Страницы: 1 2 3 4 ... 9 ... 16 17 18 Следующая

FordPerfectПостоялецwww14 сен. 20166:56#15
А кто как делает изменение громкости в зависимости от частоты?

Если делать одинаковую амплитуду, то высокие ноты звучат громче, что логично, т. к. энергия осциллятора пропорциональна [cht]\omega^2 A^2[/cht]. Казалось бы, на эту [cht]\omega[/cht] (не на квадрат) и делить.
Но правильный ли это подход? Где гарантия, что у реальных инструментов энергия (мощность) одинаковы?
Может есть какая-то теория на эту тему?
Или экспериментальные данные.

У меня сейчас от балды powf(2.0f,-float(pitch)/64.0f), вроде как-то звучит, но не особо внятно, на мой вкус.

Odin P. MorganПостоялецwww14 сен. 20168:51#16
А кто как делает изменение громкости в зависимости от частоты?

Есть спектр частот в районе 2КГц - он отвечает за восприятие громкости инструмента ухом человека. Так вот на высоких нотах, данный спектр можно делать менее динамичным, за счёт чего выравнивать громкость всех нот.
Данным приёмом активно пользуют звукоинженеры. Зная особенности восприятия звука человеческим ухом, можно делать достаточно динамичные композиции, с учётом, что степень компрессии дорожек будет достаточно высокая.
Программированием синтезаторов я не занимался, хотя задумывался на тему. А вот звукозаписью занимаюсь активно, т.к. музыкант.

Правка: 14 сен. 2016 8:51

RikkПостоялецwww14 сен. 201610:23#17
тут наверное надо посмотреть видеоуроки
gammakerПостоялецwww14 сен. 201611:09#18
FordPerfect
> А кто как делает изменение громкости в зависимости от частоты?
Я никак не делаю и вроде более-менее норм.
RikkПостоялецwww14 сен. 201612:13#19
амплитуда влияет на громкость I=Im*sin , Im—- влияет на громкость . транзистор усиливает сигнал Im ,надо программировать модель транзисторного усилителя. частота f=50герц считается фиксированным параметром и влиять не будет (или не сильно).
FordPerfectПостоялецwww28 сен. 20165:13#20
Ещё: у кого есть позитивный опыт в создании ударных?
Mikle?
Вроде Роман Шувалов делал нечто довольно дешёвое+сердитое. Можно подробнее?
foxesПостоялецwww28 сен. 20165:40#21
FordPerfect
до этого был конкурс там мы много вместе всякого выкладывали же.

Это мелодия из Protrekker-a я ее портировал для теста своего синтезатора и ударников вот что получилось:

В отличии от Protrekker-a (семплы) здесь полный синтез.

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

небольшая вводная

один из ударников для https://jsfiddle.net/arfp072t/embedded/result/

Правка: 28 сен. 2016 6:42

FordPerfectПостоялецwww28 сен. 20165:44#22
foxes
Вот кстати, тамошние ссылки бы пособирать охота.

Кто-то делал орган, лучше чем
http://www.gamedev.ru/projects/forum/?id=180947&page=123#m1831
?

gammakerПостоялецwww28 сен. 20169:36#23
FordPerfect
Mikle делал физическое моделирование удариков на VB6. Я перевёл этот код на C++ и сделал им себе пару ударников, варьируя разные параметры. Надо будет ещё поэкспериментировать с параметрами и сделать побольше разных ударников.

Вот пара примеров синтеза музыки с ударниками моим синтезатором:

  • My Way
  • ABBA Mamma Mia
  • FordPerfect
    > Кто-то делал орган, лучше чем
    Так вроде и тот орган очень хорош, я его у себя использую.

    FordPerfectПостоялецwww28 сен. 201619:02#24
    gammaker
    >Так вроде и тот орган очень хорош
    На достигнутом не останавливаться.
    FordPerfectПостоялецwww1 окт. 20161:56#25
    Казалось бы свист незатейлив, и вообще близок к чистой синусоиде.
    Однако:
    // Whistle
      var a=340*exp(5*(A-0.5));
      var v=0;
      t+=(1/(225*a))*noise3(5*a*t)*(0.125+exp(-7*t));
      v+=sin(2*pi*a*(340/340)*t)*pow(10,(16-39.7)/2)*sigma(25/2*t);
      v+=sin(2*pi*a*(1055/340)*t)*pow(10,(16-31.3)/2)*sigma(25/2*t);
      v+=sin(2*pi*a*(1752/340)*t)*pow(10,(16-17.2)/2)*sigma(50/2*t);
      v+=sin(2*pi*a*(3499/340)*t)*pow(10,(16-62.7)/2)*sigma(125*t);
      v+=sin(2*pi*a*(5245/340)*t)*pow(10,(16-62.5)/2)*sigma(125*t);
      v*=(1+(1/16)*sin(17*t)+(1/20)*sin(25*t)+(1/25)*sin(37*t));
      v*=exp(-0.5*t);
      return v;
    Звучит не особо, да и тормозит, т. к. фазовая модуляция.
    gammakerПостоялецwww1 окт. 201610:11#26
    FordPerfect
    > Однако:
    А зачем такие сложности? У меня свист сделан намного проще, просто несколько октав и затухание не экспоненциальное, а только по краям. И мне кажется, звучит лучше. Хотя конечно немного резко.

    Можешь послушать, только в поле ввода адреса вставь ссылку http://gammaker.github.io/midi/X-files.mid

    MikleМодераторwww1 окт. 201617:53#27
    FordPerfect
    > у кого есть позитивный опыт в создании ударных?
    Бас-бочка: http://www.gamedev.ru/projects/forum/?id=209634&page=62#m915
    Есть так же:
    Чайна: https://yadi.sk/d/zJ5qWwmcS8U82
    Райд: https://yadi.sk/d/LVg1EgVpRapQo
    Хай-хет: https://yadi.sk/d/TVQ0z8h_oMCuj
    Код могу поискать.
    Струну тоже имеет смысл тут вспомнить:
    http://www.gamedev.ru/projects/forum/?id=180947&page=67#m991

    Правка: 1 окт. 2016 18:12

    the trickПостоялецwww1 окт. 201620:28#28
    Тоже писал несколько синтезаторов на VB6.
    FM-синтезатор

    Синтезатор ударных:

    Аддитивный синтезатор

    Два последних используются в этом проекте. Там же можно посмотреть наглядно как они работают.

    FordPerfectПостоялецwww3 окт. 201621:15#29
    Народ, а как понимать литавры (timpani)?
    1. В General MIDI они не как ударные, а как обычный инструмент (ещё и в блоке скрипки почему-то), т. е. для него по-идее осмысленно понятие высоты звучания.
    2. Википедия уклончива на эту тему.
    3. Взгляд на спектрограмму в Audacity показывает обычный розовый шум, без выделенного пика (кроме того, который в нуле).

    Вопросы: действительно ли для литавров осмысленна мелодия?
    Как понимать "частоту" звучания литавров?

    Страницы: 1 2 3 4 ... 9 ... 16 17 18 Следующая

    / Форум / Программирование игр / Звук

    2001—2017 © GameDev.ru — Разработка игр