📻 Кольори шуму — білий, рожевий і коричневий

Білий шум має однакову потужність на всіх частотах, рожевий шум спадає як 1/f (однакова енергія на октаву), а коричневий — як 1/f² — та сама випадковість, лише по-різному відфільтрована.

ЗвукІнтерактивно
Рожевий шум Восса-Маккартні · коричневий шум як інтегроване випадкове блукання · P пауза · R скинути

Як це працює

«Колір» випадкового сигналу повністю визначається його спектральною густиною потужності S(f) — тим, як його середня потужність розподілена за частотою. Білий шум має пласку PSD (однакову потужність на герц), і його тривіально генерувати: щокроку брати новий незалежний випадковий відлік. Рожевому і коричневому шуму потрібен процес формування спектра, бо просте пропускання білого шуму через довільний фільтр низьких частот не відтворює точний степеневий нахил 1/f чи 1/f², який їх визначає.

Рожевий шум тут генерується алгоритмом Восса-Маккартні: невеликий набір незалежних випадкових генераторів («рядків») оновлюється з октавно рознесеними швидкостями — рядок 0 щовідліку, рядок 1 кожен другий відлік, рядок 2 кожен четвертий, і так далі — і всі сумуються разом, що ефективно реалізується оновленням рядка, вказаного кількістю кінцевих нульових бітів лічильника, що зростає. Коричневий шум генерується як накопичувальна сума (дискретний інтеграл) білого шуму, обмежена, щоб залишатися в межах діапазону — той самий процес, що й одновимірне випадкове блукання, звідки й назва «броунівський шум». Полотно періодично перераховує наближену спектральну густину потужності з буфера останніх відліків за допомогою прямого дискретного перетворення Фур'є, обчисленого на логарифмічно рознесених частотах (періодограма), тож плаский, -3 дБ/окт і -6 дБ/окт тренди видно, а не лише чутно.

Білий: S(f) ∝ f⁰ (плаский спектр, незалежні відліки)
Рожевий: S(f) ∝ f⁻¹ (Восс-Маккартні: сума октавно рознесених генераторів)
Коричневий: S(f) ∝ f⁻² (накопичувальна сума / випадкове блукання білого шуму)
Синій: S(f) ∝ f⁺¹ (перша різниця білого шуму, додатково)

Часті запитання

Що таке спектральна густина потужності (PSD) і чому вона визначає «колір» шуму?

Спектральна густина потужності описує, як середня потужність випадкового сигналу розподілена за частотою, S(f). «Кольори» шуму — це просто назви характерних форм PSD: пласке S(f) — білий шум, S(f) ∝ 1/f — рожевий, а S(f) ∝ 1/f² — коричневий. Два сигнали з однаковою формою PSD звучать як один і той самий «колір», хоча самі випадкові відліки щоразу різні при генерації.

Чому білий шум називають «білим»?

Назва — аналогія до білого світла, яке містить приблизно однакову інтенсивність на всіх видимих довжинах хвиль. Так само білий шум має однакову потужність на герц на кожній чутній частоті — його спектральна густина потужності пласка, S(f) ∝ f⁰. У цій симуляції він генерується просто взяттям нового незалежного випадкового відліку щокроку без жодної кореляції між відліками.

Чому рожевий шум звучить «тьмяніше» або тепліше за білий, хоча має більше енергії на низьких частотах на кожен герц?

Людський слух групує частоти в октавні смуги, а кожна октава — це подвоєння частоти, тож у високих октавах набагато більше окремих герц, ніж у низьких. Білий шум має однакову енергію на герц, тож октави однакової ширини на високих частотах збирають значно більше сумарної енергії, ніж на низьких — звідси яскраве, шипляче звучання. Рожевий шум натомість має однакову енергію на октаву, що відповідає тому, як ми сприймаємо висоту тону, тож цей акцент на високих частотах зникає і звук стає теплішим і тьмянішим, попри реальну енергію на кожному герці.

Як алгоритм Восса-Маккартні насправді генерує рожевий шум?

Метод Восса-Маккартні тримає невеликий набір незалежних випадкових «рядків», кожен з яких оновлюється з різною швидкістю: рядок 0 змінюється щовідліку, рядок 1 — кожен другий відлік, рядок 2 — кожен четвертий, і так далі октавними кроками. Сума всіх рядків дає сигнал, чий спектр спадає близько до 1/f, бо повільніші рядки додають більше низькочастотного вмісту, а швидші — більше високочастотного, у октавно збалансованих пропорціях. Дешевий спосіб обрати, який рядок оновити на кожному кроці, — порахувати кількість кінцевих нульових бітів лічильника, що зростає, — це природно оновлює рядок 0 у половині випадків, рядок 1 у чверті випадків, і так далі.

Чому пристрої з білим шумом допомагають людям заснути або замаскувати звук?

Плаский, широкосмуговий спектр білого шуму охоплює практично всі чутні частоти одночасно, тож він дуже ефективно піднімає поріг слухового маскування в усьому діапазоні слуху — тихіші, змінні звуки на кшталт грюкання дверей чи вуличного шуму просто тонуть у постійному незмінному шипінні. Оскільки він не має вираженої висоти чи ритму, мозок також швидко звикає до нього, замість постійно розпізнавати його як новий звук, що привертає увагу.

Чому рожевий шум (1/f-шум) настільки часто трапляється в природі та біологічних системах?

Спектри 1/f надзвичайно поширені в фізичних і біологічних часових рядах: варіабельність інтервалів серцевого ритму, частота нейронних імпульсів, річкові потоки й навіть музика демонструють приблизно рожевий спектр. Це, схоже, виникає щоразу, коли система містить багато взаємодіючих процесів на різних масштабах часу, кожен з яких робить приблизно однаковий внесок на октаву, а не на герц — жоден єдиний механізм не пояснює це повністю, але провідне пояснення — повсюдність слабо пов'язаних багатомасштабних процесів у природі.

Як звучить коричневий (броунівський) шум і чому?

Коричневий шум звучить як глибокий, гуркітливий рев — наче водоспад або сильний дощ, почутий здалеку, — бо його потужність різко спадає (як 1/f²) зі зростанням частоти, тож майже вся енергія зосереджена внизу спектра, а до високих частот доходить дуже мало. Назва походить від броунівського руху, а не від коричневого кольору; це гра слів на прізвище Роберта Брауна, ботаніка, який описав хаотичне тремтіння пилкових зерен у воді.

Який математичний зв'язок між коричневим шумом і випадковим блуканням?

Коричневий шум буквально є накопичувальною сумою (дискретним інтегралом) білого шуму, що є точним визначенням одновимірного випадкового блукання, або дискретного броунівського руху: на кожному кроці до поточної позиції додається новий незалежний випадковий приріст. Інтегрування в часі еквівалентне діленню на частоту в спектральній області, тож одноразове інтегрування білого шуму (плаский спектр) дає спектр 1/f² — додатковий множник f порівняно з одинарним 1/f рожевого шуму виникає саме через цей подвійний ефект інтегрування.

Що таке синій шум і чим він відрізняється від інших кольорів?

Синій шум має потужність, що зростає з частотою, S(f) ∝ f — дзеркальне відображення рожевого шуму. У цій симуляції він генерується різницею послідовних відліків білого шуму, що є дискретним еквівалентом диференціювання і підсилює високі частоти, пригнічуючи низькі. Звучить тонко, шипляче й різко, і використовується в таких галузях, як дизерінг і штрихування, де бажана рівномірно розподілена високочастотна енергія без низькочастотних згустків.

Про цю симуляцію

Автор: Команда MySimulator · Редакційна перевірка: Редакція MySimulator

Востаннє оновлено: 11 липня 2026

Ця симуляція генерує три справжні кольори шуму відлік за відліком і дає змогу і почути, і побачити різницю: білий шум — з незалежних випадкових відліків, рожевий — за класичним алгоритмом Восса-Маккартні (сума октавно рознесених випадкових генераторів), а коричневий — як обмежена накопичувальна сума білого шуму, тобто дискретне випадкове блукання. Живий рухомий графік хвильової форми та логарифмічний графік спектральної густини потужності, обчислений прямим дискретним перетворенням Фур'є над буфером останніх відліків, показують плаский, -3 дБ/окт і -6 дБ/окт нахили безпосередньо, а Web Audio відтворює справжні відліки обраного алгоритму через ваші динаміки в реальному часі.

🔬 Що показано

Рухомий часовий графік хвильової форми обраного кольору шуму разом із наближеним графіком спектральної густини потужності, обчисленим методом прямої DFT-періодограми над буфером з вікном Ганна, тож характерні пласкі / -3 дБ/окт / -6 дБ/окт степеневі нахили видно на логарифмічній осі частот, а не лише чутно.

🎮 Як користуватись

Оберіть тип шуму зі списку, натисніть «Грати», щоб почути його в реальному часі через Web Audio, і перетягніть повзунок гучності, щоб налаштувати рівень. Полотно продовжує анімуватися незалежно від відтворення — P ставить візуалізацію на паузу, R скидає буфер відліків і графік PSD.

💡 Чи знали ви?

Рожевий шум несе більше «сирої» енергії на герц на низьких частотах, ніж білий шум будь-де, і все ж звучить «тьмяніше» — бо людський слух (і більшість спектральних дисплеїв) природно групує частоти за октавами, а рожевий шум визначається саме однаковою енергією на октаву, а не на герц.

Часті запитання

Чому перемикання noiseType на «pink» викликає makeVossPink(), а не просте пропускання білого шуму через фільтр?

makeVossPink() створює замикання з дванадцятьма незалежними випадковими «рядками» плюс накопичувальною сумою, і кожен виклик отриманого генератора оновлює рівно один рядок (обраний через trailingZeroBits(counter)), перш ніж повернути оновлену суму, поділену на кількість рядків. Один фільтр низьких частот може лише наближено відтворити нахил 1/f у вузькій смузі, тоді як стек октавно рознесених генераторів відтворює правильний степеневий нахил у всьому чутному діапазоні — саме тому використовується цей алгоритм, а не просте фільтрування.

Що насправді контролює trailingZeroBits(counter) у генераторі рожевого шуму?

trailingZeroBits(counter) рахує, скільки молодших бітів лічильника, що зростає, дорівнюють нулю, і це число (за модулем кількості рядків) обирає, який рядок отримає нове випадкове значення за цей виклик. Оскільки кількість кінцевих нулів 0 трапляється в половині всіх цілих чисел, 1 — у чверті, 2 — у восьмій частині, і так далі, рядок 0 оновлюється щовідліку, рядок 1 — кожен другий відлік, рядок 2 — кожен четвертий — саме ті октавно рознесені швидкості оновлення, яких вимагає метод Восса-Маккартні.

Чому накопичувальна сума генератора коричневого шуму обмежена діапазоном [-1, 1], а не залишена вільно накопичуватись?

Замикання коричневого шуму додає невеликий масштабований приріст білого шуму до brownState за кожен виклик, що є справжнім необмеженим випадковим блуканням і з часом дрейфувало б довільно далеко від нуля (добре відома властивість броунівського руху). Обмеження brownState назад у діапазон [-1, 1] на кожному кроці утримує хвильову форму й вихід Web Audio в безпечному, чутному діапазоні амплітуд, не змінюючи форму 1/f² спектра.

Як computePSD() перетворює буфер відліків на логарифмічний графік на полотні?

computePSD() застосовує вікно Ганна до останніх 1024 відліків visBuffer, а потім обчислює пряме дискретне перетворення Фур'є — просту суму косинусних і синусних доданків — на фіксованому наборі логарифмічно рознесених частотних бінів, замість обчислення кожної можливої частоти, що тримає обчислювальні витрати на кадр керованими, водночас окреслюючи плаский, -3 дБ/окт або -6 дБ/окт тренд для обраного типу шуму.

Чому переміщення повзунка гучності змінює gainNode.gain.value, але не форму графіка PSD?

Повзунок гучності лише оновлює gainNode.gain.value — множник, застосований після генерації відліків шуму, тож він змінює гучність рівномірно на всіх частотах, не змінюючи саму послідовність відліків, яку аналізують visBuffer і computePSD(). Масштабування кожного відліку на одну й ту саму константу зсуває весь графік PSD вгору чи вниз на фіксовану кількість децибел, але залишає його характерний нахил — плаский, -3 чи -6 дБ на октаву — абсолютно незмінним.