Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Журчание воды


Автор: frost 2.11.2003, 21:07
Это скорее всего не вопрос.

Когда я сидел на голимом бейсике, я попробовал нечто вроде:
Код

while inkey$ = ""
sound 15000 * rnd, 0.01
wend


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

Кто-нибудь знает, как сгенерировать более правдоподобный звук?

Я хочу, чтобы звук не выбивался, если вы меня понимаете.

Автор: val 3.11.2003, 16:19
Так тебе нужен метод синтеза "белого шума" или звук журчащей воды?

Автор: podval 3.11.2003, 20:53
Скорее всего имеется в виду все же белый шум или
Цитата
Шум водопада
, как выразился автор. Это не журчание.

Автор: oleg1973 4.11.2003, 01:27
wavik проиграть smile.gif

Автор: podval 4.11.2003, 10:04
Код

//(с) Сергей Алейник, по книжке Хэмминга

float  Gauss_value(float Exp, float Sig)
{
 static const float  Mult = 2.F / RAND_MAX;
 static char         Key;
 static float        x2;
 float               v1, v2, s, x1;
   
 if(Key == 0)
 {
   do
   {
     v1 = -1 + Mult * rand();
     v2 = -1 + Mult * rand();
     s  = v1 * v1 + v2 * v2;
   }while(s >= 1);
       
   x1  = (float)(sqrt(-2 * log(s) / s));
   x2  = v2 * x1;
   Key = 1;
   return(v1 * x1 * Sig + Exp);
 }
 else
 {
   Key = 0;
   return(x2 * Sig + Exp);
 }
}


В принципе, это вполне приличный генератор БГШ, дает отсчеты гаусовской случайной величины с параметрами Exp - матожидание и Sig - СКО.

Автор: podval 4.11.2003, 10:06
Код

float Pink_noise(float Sig, float Alpha)
{
   static float y, Mult;
   
   if(Mult == 0.F) Mult = 1.F / (float)sqrt((1-Alpha) / (1+Alpha));
   
   return(Sig * Mult * (y=Alpha*y+(1.F-Alpha)*Gauss_value(0., 1.)));
}

А это "розовый" шум.
Alpha меняется в пределах [0, 1).
0 - белый шум.
Чем ближе к 1 (1 не включается!), тем более розовый шум (ярче выражены НЧ компоненты).

Автор: podval 4.11.2003, 10:23
Кстати, Alpha можно изменять и от -1 до 0 - получится "голубой" шум, т.е. более выражены ВЧ компоненты smile.gif

Автор: SlHunter 8.12.2007, 19:44
А как проверить, получился белый шум или нет? 

Автор: podval 9.12.2007, 19:28
Воспользоваться определением - проверить на нулевое матожидание и АКФ типа дельта-функции. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)