Еще с момента выхода BWGen ощутил острую необходимость в том, чтобы фоновый шум был маленько поразнообразнее, чем просто банальный розовый или коричневый шум.
Программистских экспериментов была масса, по неопытности не очень удачных, и тема была заброшена на неопределенное время.
И вот какое-то время назад оформилась дельная мысль, которую я бросился воплощать.
Суть в том, чтобы генерировать обычный белый шум, но накладывать на него БИХ(IIR)-фильтры, причем фильтры с "плавающими" параметрами, которые бы задавались графиками. Эти фильтры весьма просты в создании и очень нересурсоёмки.
При этом звук может получиться очень даже интересный.
Главная фича в том, что подобных программ на данный момент нет. Есть всякие SBaGenы, BWGen'ы, NP2 и прочие, в которых момент ПЛАВАЮЩИХ спектральных характеристик фонового шума просто опущен.
Причем! Проэмулировать данные звуки с помощью аудиоредакторов тоже весьма непросто. В SoundForge, например, вообще нет такого понятия как фильтр с плавающими параметрами (есть только всякие wahwah,phaser в которых параметры плавают по синусоиде, всегда). В Audition такое появилось относительно недавно, но там временнАя шкала невменяемая - нельзя хоть какого-то хронометража параметров добиться (только разве что совсем условно, и на очень недлинной дистанции).
Кстати, такой фоновый шум используется в HemiSync. При его создании они скорее всего использовали какие-то железячные шумогенерилки.
На данной стадии программа генерирует только шум. Характеристики шума можно очень широко варьировать параметрически. Редактор графиков параметров старался сделать как можно более удобным (не сравнить с BWG'шным). Амплитуда шума пока что не реализована (пока что это вообще первая пре-альфа), чтобы просто продемонстрировать о чем вообще все это (!!! Добавлено: уже реализована).
У каждого фильтра может быть 2-3 параметра (в зависимости от типа фильтра). Сами кривые задаются как безье-сплайны, приведенные к одномерной форме (y=f(x)). Касательные по ширине хоть и могут заходить за пределы соседних узлов, но при этом они "обрезаются", чтобы не создавались ситуации горизонтальных перехлестов (все-таки одному X соответствует один Y).
сама программа.
Интерфейс достаточно интуитивный (по крайней мере старался делать таковым). Правая кнопка на графиках пока работает только как панорамирование (предполагается и контекстное меню).
Графики: Insert - добавить узел, Delete - Удалить узел(узлы), 's' изменить "гладкость", '~' - переключаться между изменениями узла и направляющих, лево/право/вверх/вниз - двигать выбранные узлы/направляющие (ctrl - x10 размер шага), '<' и '>' переключаться между узлами (клавиатурой можно редактировать кривую, но пока что ввод цифрами не реализован).
Работает выделение рамкой и с shift/ctrl. Ctrl+C (копировать), Ctrl+V (вставить) тоже работают, при этом данные сохраняются в буфере в текстовом виде, и его можно сохранить в каком-нибудь текстовом файле и использовать позже.
Колесо - Изменение масштаба, +Shift = только горизонтальное, +Ctrl = только вертикальное.
Двойной клик - раздвигает график по вертикали(остальные "скукоживаются"). Это если нужно более подробно проработать.
Filter list: RMB = контекстоном меню (добавить/удалить/изменить цвет/изменить тип фильтра).
Справа внизу - вертикально ориентированный АЧХ всех фильтров (серый) и текущего (цветной). Масштаб пока что линейный, с логарифмическим нужно будет помудрить, и это дело будущего. (!!! Уже сделал логарифмический + шкала)
ВременнОй указатель можно перемещается при щелчке левой кнопкой над или под графиком (под графиком убрал - т.к. это порой вызывает нежелаемые перемотки). Его, кстати, можно перемещать и во время воспроизведения. Если во время воспроизведения менять параметры кривой, то это будет сразу отражаться на звуке, но изменение типа фильтров происходит только во время начала воспроизведения (когда фокус на графике - клавиша Space).
Учитывая то, что графики и фильтры по своей длительности могут быть совершенно произвольной длины, не зависимы друг от друга, то это создает ситуацию "плавающих" периодов. В этом смысле нужно быть осторожными чтобы разные параметры одного фильтра не уплыли друг от друга на "недокументированное" расстояние

За счет этого, кстати, полный ОБЩИЙ цикл для всех параметров может оказаться больше нескольких часов или даже суток.
Время от времени могут вылазить "щелчки" (как правило из-за несовпадения циклов и резкого "переключения" основной частоты фильтра), и в принципе могут выскакивать "исключения". Если найдутся четкие повторяемые сочетания - сообщайте.
В архив включен демонстрационный файлик. Там простенький быстро наброшеный шумовой "рисунок". Формат файла пока что текстовый, потом скорее всего это поменяю.
Стерео как таковое пока что никак не реализовано. Все параметры фильтров дублируются на левом и на правом канале, но сам шум - стерео.
Программа пишется на дельфи, но в принципе возможно ее переписать на сях и портировать на маки (если найдутся добровольцы). Также неплохо было бы заиметь что-то типа домашней странички (проект-то все-таки не совсем отстойный, хоть и на совсем ранней стадии). Изначально кстати была мысль о том чтобы было 2 версии, одна - сам редактор, другая - сверхоблегченная, консольная, типа SBaGen'а. Сам принцип изменения параметров и использования фильтров - ОЧЕНЬ простой. И мне честно говоря очень странным кажется тот факт, что такого никто не делал. Может быть этот "хитрый" шум и правда нафиг никому не нужен? Лично для меня это замена музыки, когда нужно заблокироваться от фоновых окружающих шумов и сосредоточиться на своей задаче.
В будущем, если идея не окажется загубленной и зарубленной, планируется сделать этот "шум" - лишь шаблоном, коих в рамках одного "пресета" можно будет использовать энное количество. Кроме того должно быть полностью независимые левый-правый канал, или же с каким-то коэффицентом смешивания. А также добавить к этому всему бинауральные и возможно изохронические треки. Также есть мысль сделать что-то вроде линии задержки (чтобы шум левого и правого канала отличались на некоторую, ПАРАМЕТРИЧЕСКУЮ величину). В этом смысле, будучи совмещенным с плавающими пиковыми фильтрами звук можно сделать "трехмерным", HRTF подобным.
Пишите если есть какие мысли или замечания или предложения.