Войти
ПрограммированиеФорумЗвук

Как правильно интерполировать звук (двигателя)? (OpenAL-soft) (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
22:19, 15 сен. 2018

vindast
> я так и делал
У тебя там делится на (MAXRPM - MINRPM) вместо (SampleRPM[i + 1] - SampleRPM[ i]).


#31
23:16, 15 сен. 2018

Функция:

  inline void update(const float& RPM, const float& MINRPM, const float& MAXRPM, const float& trotle, const vec3& pos, const vec3& velocity)
  {
    int FirstSample  = 0;
    int SecondSample = 1;

    for (int i = 1; i < soundInSamples.size(); i++)
    {
      if (soundInSamples[i - 1]->getRPM() <= RPM && soundInSamples[i]->getRPM() >= RPM)
      {
        FirstSample = i - 1;
        SecondSample = i;
        break;
      }
    }


    if (SecondSample > soundInSamples.size() - 1)
    {
      SecondSample = soundInSamples.size() - 1;
      FirstSample = SecondSample - 1;
    }

    float Gain1 = 1.0f - 
      (RPM - soundInSamples[FirstSample]->getRPM()) / 
      (soundInSamples[SecondSample]->getRPM() - soundInSamples[FirstSample]->getRPM());

    float Gain2 = 1.0f - Gain1;

    soundInSamples[ FirstSample]->setGain(Gain1);
    soundInSamples[SecondSample]->setGain(Gain2);

    float Pitch1 = RPM / soundInSamples[ FirstSample]->getRPM();
    float Pitch2 = RPM / soundInSamples[SecondSample]->getRPM();

    soundInSamples[ FirstSample]->setPith(Pitch1);
    soundInSamples[SecondSample]->setPith(Pitch2);

    for (int i = 0; i < soundInSamples.size(); i++)
    {
      if (i != FirstSample && i != SecondSample)
      {
        soundInSamples[i]->setGain(0.0f);
      }
      soundInSamples[i]->setWorldPosition(pos);
    }
  }

Видос:

Как то не так все равно. И не двоит, и перепад громкости не слышен, но все равно не то. Может и правда семплы говно?

#32
5:08, 16 сен. 2018

Это победа?
Добавил pow, что бы громкость не интерполировалась линейно.

  float d = 1.0f / 1.5f;

  Gain1 = pow(Gain1, d);
  Gain2 = pow(Gain2, d);

Звук от bmw m3 е92.

#33
8:44, 16 сен. 2018

vindast
> Это победа?
Да, не плохо, только на самом низу, там не звук стартёра примешивается? Может первый семпл лишний, предназначен только для озвучивания запуска двигателя?
Удивило, что степень оказалась 1.0f / 1.5f, я хотел ещё вчера посоветовать, если будет неравномерно, попробовать задействовать степень, но 1/2.

#34
16:06, 16 сен. 2018

Mikle
Степень подбирал очень долго. Сам не могу объяснить почему она такая.
Первый семпл это холостой ход, впрочем проверю. Там действительно что-то странное, я еще когда проверял все заметил, но подумал что тут ничего не сделаешь.

#35
16:15, 16 сен. 2018

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

#36
16:27, 16 сен. 2018

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

#37
18:31, 16 сен. 2018

vindast
Наверное стоит регулировать общую громкость учитывая обороты, а то холостые звучат с громкостью как на высоких оборотах.

#38
18:44, 16 сен. 2018

Жора Монтировка
Скорее имеет смысл регулировать громкость в зависимости от нагрузки, от позиции педали газа.

#39
18:55, 16 сен. 2018

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

#40
19:05, 16 сен. 2018

Сделал вот такою штуку:
gain *= 1.0f - (1.0f - trotle) * 0.5f
падение громкости на 50% при отсутствии газа.

#41
19:19, 16 сен. 2018

Стало значительно лучше.

#42
19:43, 16 сен. 2018

Mikle, на таком уровне можно остановиться? Я просто не знаю как выжать больше.

Думаю можно добавить еще звук турбины в зависимости от оборотов.
Ну и эффекты "выстрела" из труб при переключении передач, эффект самого переключения передач и визг покрышек в зависимости от проскальзывания.
Но это уже другая песня ) 

#43
21:52, 16 сен. 2018

Mikle
> Если двигатель вращается с частотой 250 гц, то первый семпл нужно
> воспроизводить с питчем 250/300 = 0.8333333, а второй 250/400 = 0.625, тогда
> они совпадут без эффекта интерференции звука.
Mikle
> В первом семпле 470 Гц, во втором - 585, скачай какой-нибудь камертон - и
> проверяй.
Что за камертон то? Никакое по не гуглится по этому запросу.

#44
23:18, 16 сен. 2018

vindast
> Что за камертон то? Никакое по не гуглится по этому запросу.
Странно, Первые две ссылки Яндекса:
https://blogosoft.com/37515
http://www.softportal.com/get-22606-kamerton.html
Я не скачивал, но по описанию становится понятно, что это такое.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумЗвук

Тема в архиве.