/** * Типы для synth.mjs: чистые примитивы синтеза без node-зависимостей * (их можно импортировать и в браузере — в отличие от wav.mjs с node:fs). * Сам .mjs без JSDoc-типов, декларация рядом покрывает оба tsconfig-проекта. */ /** Частота дискретизации синтеза, Гц. */ export declare const RATE: number; /** Детерминированный ГПСЧ (mulberry32): (seed) → функция () => [0..1). */ export declare function makeRng(seed: number): () => number; /** Сэмплы длительностью seconds: fn(t секунды, i индекс) → значение волны. */ export declare function synth(seconds: number, fn: (t: number, i: number) => number, rate?: number): Float32Array; /** Огибающая затухания: 1 на старте → 0 к концу (кривая t^power). */ export declare function decay(t: number, dur: number, power?: number): number; /** Партиал колокола: sin(2π·freq·stretch·t) с затуханием decay. */ export declare function bellPartial(freq: number, stretch: number, dur: number, power?: number): (t: number) => number; /** Полосовой шум: детерминированная последовательность сэмплов в полосе. */ export declare function bandNoise(seed: number, lowHz: number, highHz: number, dur: number): () => number; /** Нормализация к пику (по модулю), дефолт 0.9. */ export declare function normalize(samples: Float32Array, peak?: number): Float32Array; /** Сшить края в луп коротким кроссфейдом (возвращает копию без хвоста фейда). */ export declare function loopify(samples: Float32Array, fadeSeconds?: number): Float32Array;