Генератор фонового шума (Noise constructor)

Аватара пользователя
Джим
Сообщения: 210
Зарегистрирован: Пт июн 15, 2007 23:03

Сообщение Джим »

В принципе, можно взять основой таймлайн с бинауральными и изохроническими тонами в текстовой форме, аналогичной SBaGen (именованные блоки)...
Обращаю внимание, что скрипты SBG, при всех достоинствах обладают не вполне очевидным, но убойным недостатком -- там всю дорогу надо вычислять время и аккуратно складывать hh:mm:ss -- это дико достает, и это не должно повториться.
...Без кубической инерполяции значений основного сигнала (шума) тут не обойтись. ...
Я никогда не слышал про то, что бы при обработке сигналов вообще (и звука в частности) использовались стандартные математические методы интерполяции (разве что при масштабировании картинок). Т.е. всякие там временные преобразования всегда выполнялись на моем веку в терминах фильтра sin(x)/x. Возможно, я отстал от жизни -- ссылочку бы кинули на обработчик, где использовалась бы кубическая (или другая) интерполяция? (пишу без всякой иронии.)
Гость
А как вам нравятся "FractMus 2000" и "Fractal Tune Smithy"?
Есть еще довольно интересная "musinum208"...
Спасибо! Но мне на сегодня более всего нравится перспектива написать это самому. Т.е. учиться, учиться и учиться. Возможно, конечно, я бы соблазнился готовыми исходниками одной из подобных прог, но. Спасибо еще раз.
Волутар
Сообщения: 62
Зарегистрирован: Пт сен 25, 2009 6:12

Сообщение Волутар »

Как еще можно задержать сигнал по времени на 0.3 сэмпла? Самый простой и быстрый вариант - линейной интерполяцией, но это чревато артифактами некоторыми. Как правило такое делают кубической интерполяцией. На всех сайтах посвященных DSP это делается именно таким образом. На том же musicdsp.org.
При создании Flanger эффекта (не важно, с feedforward или feedback) берется та же кубическая интерполяция.

Про термины фильтра sin(x)/x ничего не знаю.
там всю дорогу надо вычислять время и аккуратно складывать hh:mm:ss -- это дико достает, и это не должно повториться.
Я не шибко глубоко ковырял удобство ихних скриптов. В чем именно доставание и зачем аккуратно складывать?
Аватара пользователя
Джим
Сообщения: 210
Зарегистрирован: Пт июн 15, 2007 23:03

Сообщение Джим »

Как еще можно задержать сигнал по времени на 0.3 сэмпла?
Ситуации, когда нужна задержка на дробное число отсчетов, нужно, и, как правило можно избегать любой ценой.
С кодом ознакомился, забавно. Когда всех передушу (это шутка :( ) -- распишу и посмотрю -- вообще -- дико и ново. (А вы можете сказать, не задумываясь -- какая будет у такого преобразования АФЧХ? Точно не знаю, но сильно подозреваю, что довольно неожиданная, с высокой вероятностью.)
По любому -- спасибо на отклик.
нащет sin(x)/x -- это идеальный интерполирующий фильтр (точнее -- его имп. хар.). Я никогда не делал передискритизацию, но знаю по кр. мере 2 примера, когда нород с гордостью говорил, что вот это-то они и использовали. Конкретный пример есть в коде SBG -- там, где waveform по точкам задается -- не лучший, кстати -- там окна не хватает.
В чем именно доставание и зачем аккуратно складывать?
Если Вы пишите сессию для SBG, содержащую либо циклы, либо просто повторяющиеся фрагменты -- Вам, естественно, есть резон юзать "структуры" (именованные последовательности -- то, что пишется в фигурных скобках). Когда они прописываются в основную последовательность, либо когда они вложены -- учет времени становится малоприятным весьма. Для примеру см. например 'prog-chakras-1.sbg', но с учетом, что там времена искусственно выровнены. В реальной жизни, если вы хотите дать каждому сегменту произвольное время... ужас.
Аватара пользователя
Джим
Сообщения: 210
Зарегистрирован: Пт июн 15, 2007 23:03

Сообщение Джим »

Волутар
Вообще, я тут вспомнил, что Форум сей посвящен тех. поддержке всяких-разных устройств и конкретных CD. Наша беседа, посему, в рамках Форума, становится почти неприличной -- людям свойственно вопринимать таковые, как некий выпендреж, и они, обычно, правы. (Да, наверное я виноват, но это дела не меняет).
Лично я поимел на этом хорошую идею -- грести в сторону искусственной гармоничной музыки, за что, так или иначе, спасибо.
Если будет что-нибудь интересное -- проявлюсь. И на самый крайний случай -- у меня есть личка (я не DSP-гуру, но в этом году всю дорогу приходится вспоминать, чему учили, и узнавать много нового сверх того :) - не по работе, а по теме форума -- на првах хобби, типа).
Т.е. удачи.
Волутар
Сообщения: 62
Зарегистрирован: Пт сен 25, 2009 6:12

Сообщение Волутар »

нужно, и, как правило можно избегать любой ценой.
Нельзя. 0.65мс это максимум 28 сэмплов. Дискретность для HRIR задержки - чрезмерная. Нужны доли таких сэмплов чтобы 3D позиционирование было более-менее точным. Мне жаль, что Вы не очень знакомы с DSP преобразованиями и "задержками" (это - не ресемплирование, не сплайн-интерполяция, и даже не фильтрация вообще, поэтому и sin(x)/x тут ни к месту)
какая будет у такого преобразования АФЧХ?
Должна остаться оригинальная. Частоты не меняются. Меняется задержка. Флэнжер (или comb-фильтр) создается при комбинировании сигнала со слегка задержанной копией самого себя (с некоторой обратной и прямой связью). В этом случае АЧХ подобной комбинации выглядит "пилообразно". Вполне предсказуемое звучание и вообще эффект.
Для примеру см. например 'prog-chakras-1.sbg', но с учетом, что там времена искусственно выровнены.
Спасибо за инфу. Обязательно изучу этот предмет.

Рамки форума.. Мне казалось этот подфорум посвящен разным программам. У меня как раз эта "разная программа", которая лишь на начальной стадии, и поэтому пока не имеет бинауралки.
Аватара пользователя
Соловей
Сообщения: 132
Зарегистрирован: Сб окт 25, 2008 0:29

Сообщение Соловей »

Джим писал(а):Волутар
Вообще, я тут вспомнил, что Форум сей посвящен тех. поддержке всяких-разных устройств и конкретных CD. Наша беседа, посему, в рамках Форума, становится почти неприличной -- ...
На столько не приличной, что останавливатся на пол-слове будет еще не приличнее. Пожалуста, продолжайте, здесь присутсвуют те кто с интересом читает эти посты и с благодарностью изучает ссылки. Пару пожеланий от меня долгой, здоровой и успешной жизни Вы уже заработали, продолжайти - и на том свете будете живее всех живых :)
Аватара пользователя
Джим
Сообщения: 210
Зарегистрирован: Пт июн 15, 2007 23:03

Сообщение Джим »

На столько не приличной, что останавливатся на пол-слове будет еще не приличнее.
Ну да. Ну -- вот Вам для примеру вторая половина слова -- в иннете лежит масса кода, который считается ready-to-use решениями. Это, кажется, не так. В данном случае -- человек, умеющий программировать на С++ может написать что угодно, в т.ч. и аппроксимацию сигнала гладкой кривой. И во многих случаях это работоспособно. (Например, если вам надо хоть как-то восстановить clipped-sound). Возможно, это прокатит в случае шума (он же случайный), а вот в общем случае для звука -- алгоритм приведенный на musicdsp.org не представляется приемлемым. Хоть режьте.

Т.е. критика понятна. Но у меня есть и альтернативное видиние -- когда на форуме собираются 2-3 человека и начинают обсуждать тонкие аспекты проблемы, интересные только им -- когда я вижу такое в чужом исполнении, меня это раздражает (речь не об этом форуме).

Так что продолжайте, пожалуйста.
И удачи. Всем.
Аватара пользователя
Джим
Сообщения: 210
Зарегистрирован: Пт июн 15, 2007 23:03

Сообщение Джим »

Маленикий подарок::
http://yehar.com/blog/wp-content/upload ... 8/deip.pdf
-- кажется, очень неплохая статья про интерполяцию, ее применение вместо sinc(x)=sin(x)/x и как выбирать нужные решения.
И вообще, сайт http://yehar.com/ не плох, кажется, весьма; хотя, конечно, не все, что написано там пригодно для обработки звука -- что, впрочем, всегда очевидно из приводимых автором картинок -- например, предлагаемое автором преобразование Гильберта начинает работать (согласно прилагаемым картинкам) где-то от 500-600 Гц (при Fд==44,1 КГц), что не есть хорошо -- но все равно, интересно.
Удачи.
Волутар
Сообщения: 62
Зарегистрирован: Пт сен 25, 2009 6:12

Сообщение Волутар »

Джим, огромное спасибо за ссылку. Обязательно изучу.

Насчет ссылки на алгоритм на musicdsp, что мол он не представляется приемлемым для музыки. Вопрос - приемлемым для чего именно? Чтобы сделать музыку "круче"? Конечно нет! Это банальный Flanger эффект, втыкать его можно выборочно на отдельные звуки, а не на целую композицию.
А если ограничиться простой задержкой (для эмуляции межушной задержки HRTF), то и в этом случае ничего особо плохого не будет. В любом случае эмуляция 3D звучания любого звука УХУДШАЕТ его качество. Всегда. Ибо, спектральные искажения и всяческие эхи в любом случае имеют место. В этом смысле незначительные искажения, связанные с дробной задержкой, составят абсолютно минимальную часть в общей картине преобразований.
Плюс ко всему сама фильтрация вносит свою задержку и фазовые искажения в звук. Как же без этого... Тут смысл в том чтобы общее звучание было приемлемым и в своем роде эффективным.
Применять все эти фильтры к какому-либо предварительно записанному сигналу (не шуму) я не пробовал. Если такая необходимость и возникнет, то далеко не в начале пути.

Я так до сих пор пока не придумал изящное решение для разделения параметров на левый/правый (только где нужно). Чтобы оно было удобно и для редактирования и для визуализации.
Аватара пользователя
Джим
Сообщения: 210
Зарегистрирован: Пт июн 15, 2007 23:03

Сообщение Джим »

Волутар писал(а):Насчет ссылки на алгоритм на musicdsp, что мол он не представляется приемлемым для музыки. Вопрос - приемлемым для чего именно? Чтобы сделать музыку "круче"? Конечно нет! Это банальный Flanger эффект, втыкать его можно выборочно на отдельные звуки, а не на целую композицию.
На musicdsp хорошо (наверное) все. Главное, не делать вот так просто copy/paste из оттуда -- надо, по меньшей мере понимать (извините, я жуткий зануда). Кстати, если бы все, что там написано, реально работало бы -- все уже давно похоронили бы и Adobe Audition, и Sound Forge. Осталась бы одна Audacsity (или как там ее?).
Еще, внимание -- там (и нетолько там) вполне безосновательно используют float. Операции с double занимают НЕ БОЛЬШЕ ВРЕМЕНИ!! По крайней мере на x86/x64. Зато париться за точность не надо (ну, почти). (Кстати, целочисленные операции требуют много больше времени, чем плавающие -- т.е. лучше писать на C/C++ с double, чем на ассемблере, используя 32x32=64 и сложение с переносом на 64 бита -- на Core I7 double выигрывает почти в 2 раза, на AMD K8 -- в 1,5).
Волутар
Сообщения: 62
Зарегистрирован: Пт сен 25, 2009 6:12

Сообщение Волутар »

Да придерживаться float было эффективным лет 5 назад, а int - все 10-20. В нынешние времена придерживаться float может быть эффективным только при использовании SSE оптимизации (чего я очень вряд ли буду делать). При прямых вычислениях double не тормознее. Тут спору нет. У меня все основные калькуляции и идут double.
Аватара пользователя
Джим
Сообщения: 210
Зарегистрирован: Пт июн 15, 2007 23:03

Сообщение Джим »

Кстати, о музыке.
Я так и не сподобился разобраться с OpenAL (см. в поисковике), но, кажется, за искючением рендеринга в файл (что не очевидно -- есть ли нет -- но, кажется Вас это не волнует) технология дает все, над чем Вы бьетесь (заоодно, хороший способ забыть про waveOut). Т.е. там, помимо прочего, можно создать много одноканальных источников в 3D, и даже заставить их двигаться. С участием DSP's звуковухи или программно -- оно само определит (это я по первому, и, увы, на сегодня последнему впечатлению).
На правах идеи.
Волутар
Сообщения: 62
Зарегистрирован: Пт сен 25, 2009 6:12

Сообщение Волутар »

OpenAL - всего лишь мультплатформенная альтернатива DirectSound и замена waveOut. Она ничего мне не даст. Каналы смешивать я и сам умею, задержку некратную сэмплам она мне все равно не сделает. То, с чем я сейчас "застрял" она мне совершенно не поможет решить. Если после того как все это будет преодолено - решу сделать программу мультиплатформенной, тогда OpenAL может и сгодится.
Аватара пользователя
Джим
Сообщения: 210
Зарегистрирован: Пт июн 15, 2007 23:03

Сообщение Джим »

Волутар
Когда Open AL только появился я (на маниловский манер) рассматривал возможность "изготовления" "широкополосных" сессий за счет движения источников в пространстве. К добру-ли худу ли -- мне не хватило времени с этим подробно разбираться. Но, по-моему, если кто хочет поиграться -- как иструмент, это, кажется, не хуже (и сейчас и в перспективе), чем Direct Sound.
Ну, наше дело обратить внимание (опыт показывает, что не все общеизвестные вещи -- общеизвестны :) ).
Тим

Сообщение Тим »

Ух, молодец, Волутар!
Вообще я попал сюда случайно, искал про модуляции шумов для своей оптической задачи, но твоя прога впечатляет! Спасибо! :wink:
Волутар
Сообщения: 62
Зарегистрирован: Пт сен 25, 2009 6:12

Сообщение Волутар »

Да, собственно, ничего особенного я не сделал. Странно что раньше подобного не сделали... Все музыку, наверно, предпочитают.

Застрял я с удобным представлением и редактированием стерео-разделенных параметров... К сожалению...

Если фильтр будет разделен на два параметра (для левого и для правого), то нужно их как-то в графике визуально различать... но как? Штрихом - криво. Цветами - тогда может получиться совсем нелогично: фильтр1 левый - синий; фильтр1 правый - красный.
Хотя, вероятно, это единственный приемлемый вариант - пользователь ведь сам будет выбирать все эти цвета.

Да и стерео-разделение, как правило (предположительно) нужно для небольшого количества фильтров, поэтому особого цветового разнообразия это, по-идее, не должно создать.

В этом случае остается придумать новый интерфейс правого верхнего бокса с учетом специфики левого/правого. А там недалеко и до эмуляции HRTF.
Ответить

Вернуться в «Приборы и программы»