Автор Тема: Мягкая атака  (Прочитано 5516 раз)

0 Пользователей и 1 Гость просматривают эту тему.

VAT

  • Сообщений: 1453
    • Просмотр профиля
    • E-mail
Re: Мягкая атака
« Ответ #100 : Июля 10, 2006, 09:47:27 am »
Грязи в конце не должно быть - как только сигнал упал ниже какого-то уровня - канал должен закрыться шумодавом с гистерезисом.

Diz

  • Гость
Re: Мягкая атака
« Ответ #101 : Июля 10, 2006, 04:40:16 pm »
Сэмпл делать лень, да и не будет щелчка :-) Почему - ниже.

Возведение в квадрат вместо выпрямления, да. Я писал уже со ссылкой на статьи, что
это соответствует локальной энергии и лучше характеризует атаку. Фильтр НЧ - еще на знаю.
Поставил, чтобы поэкспериментировать. Далее идет дифференцирование - получаем узкие пики,
Триггер Шмидта выделяет те, которые превышают порог. Затем сигнал подается
на задержку (hold), чтобы продлить импульсы. А потом идет собственно формирование огибающей :-)
По приходу импульса на вход G (gate) амплитуда нарастает в течение времени Attack,
затем спадает в течение времени Decay и спадает до нуля после снятия импульса
в течение времени Release.

Любая нота, взятая в момент звучания первой, будет просто звучать, со всей своей атакой.
Мягкая атака пойдет лишь через некоторое время после спада первой ноты :-)

Софтина весьма знаменитая, называется Reaktor. Делает компания Native Instruments.
Берется на сборниках софта или качается из инета :-)

VAT

  • Сообщений: 1453
    • Просмотр профиля
    • E-mail
Re: Мягкая атака
« Ответ #102 : Июля 11, 2006, 05:13:17 am »
Diz:
>Любая нота, взятая в момент звучания первой, будет просто звучать, со всей своей >атакой.
Вот этого как раз и не хотелось.

DDD

  • Сообщений: 10347
  • Имею личный текст
    • Просмотр профиля
    • E-mail
Re: Мягкая атака
« Ответ #103 : Июля 11, 2006, 08:12:49 pm »
А универсальный сабж фиг сделаешь. Требуется спец. техника игры. Собственно, с любым девайсом это так в большей или меньшей степени.
Готов подписаться под каждым своим словом

Medved

  • Сообщений: 4534
  • Ле... Лети!
    • ICQ клиент - 467329541
    • Просмотр профиля
    • E-mail
Re: Мягкая атака
« Ответ #104 : Июля 18, 2006, 01:27:48 pm »
Кажется я придумал алгоритм.
Обсуждаем саму идею.
Берем сигнал с гитары, выпрямляем. Берем хитрый интегратор с памятью, который сбрасывается с определенной переодичностью. На вскидку период t должен быть в несколько раз меньше желаемого времени атаки и больше периода самой высокой ноты на гитаре хотя бы в несколько раз. Дальше сигналы соседних отсчетов с интегратора апроксимируются либо линейно либо еще как и этим сигналом управляем усилением канала.
Имеем:
1)сигнала нет, канал закрыт.
2)Атака первой ноты. За n*t с сигнал с интегратора догоняет огибающую сигнала, реализуя мягкую атаку. Сигнал с интегратора имеет вид ступенек, после сглаживания имеем некую плавную линию.
3)Атака второй ноты при звучащей первой начинается с уровня звучания первой ноты и поэтому маскируется этим. Потом она плавно выходит на свою громкость.
4)Затухание происходит плавно и без рывков.

По-сути, это все-же управление по огибающей, только без проблем с пропаданием управляющего сигнала. Недостатка видится два: сложно в аналоге и немного пострадает сутсейн.

Medved

  • Сообщений: 4534
  • Ле... Лети!
    • ICQ клиент - 467329541
    • Просмотр профиля
    • E-mail
Re: Мягкая атака
« Ответ #105 : Июля 18, 2006, 06:17:51 pm »
Так, то что я написал возможно и будет работать, но только период должен быть больше периода самой низкой ноты на гитаре, а это 12мс и метод вряд ли будет хорошо работать даже с 30мс атакой. Я кажется придумал как все сделать в цифре очень просто и очень быстро. Сейчас выложу. Это почти тоже самое, что предлагает Диз, только гораздо проще реализуется. Плюс на основе этого можно сделать прекрасный компрессор без провалов сигнала.

Medved

  • Сообщений: 4534
  • Ле... Лети!
    • ICQ клиент - 467329541
    • Просмотр профиля
    • E-mail
Re: Мягкая атака
« Ответ #106 : Июля 18, 2006, 06:45:57 pm »
Итак, что я предлагаю. Канал управления (самый простой вариант, возможно придется где-то усреднять отсчеты для стабильности):
1) Аналоговый ОДНОПОЛУПЕРИОДНЫЙ выпрямитель на оу. Здесь ему самое место.
2) Оцифровываем сигнал с помощью ацп, желательно хотя бы 10бит, лучше 12. Частота дискретизации- чем выше, тем лучше, но не меньше 20кгц.
Полученный поток циферок дифференцируем приближенно на правый край (правый- позже по времени).
Запоминаем несколько отсчетов входного потока, несколько отсчетов значения производной (вот тут, возможно, придется усреднять).  Дальше детектим изменение знака производной с + на -. Как только сдетектили, выдаем на цап значение входного сигнала в момент смены знака производной. Возвращаемся к началу пункта 2 (типа цикл)

На выходе цапа мы имеем ступенчатую аппроксимацию огибающей сигнала, причем без каких либо провалов. Задержка относительно входного сигнала смешна до безобразия- порядка десяти шагов квантования, если мк потянет арифметику без тормозов.

3) Аналоговый интегратор на выходе цап аля РЦ фнч-1 реализует саму мягкую атаку, заодно убирает ступеньки.

Теперь касаемо атаки при звучащей ноте. Я подумал, что желание убрать усиление до нуля ошибочно. Достаточно плавно нарастить громкость с уровня затухающей ноты до уровня новой ноты. Звучащая нота замаскирует все. Нужно попробовать, но не совсем понятно как это просто сделать в том же КЕПе.

Минус все тот же: небольшая потеря сустейна, которую можно преспокойно возместить компрессором, который очень даром собирается параллельно нашей схеме.

Вот и получился нойс-гейт, компрессор, мягкая атака в одном флаконе, с переключением режимов. Ляпота:) З.ы. Нарисовать картинку самой арифметики, или понятно без картинки?
« Последнее редактирование: Июля 18, 2006, 06:47:57 pm от Medved »

Diz

  • Гость
Re: Мягкая атака
« Ответ #107 : Июля 18, 2006, 07:28:16 pm »
С ходу не очевидно. Надо померять на свежую голову.

Зачем 10 (тем более 12) бит ? И частоту дискретизации нет смысла делать 20 кГц, как мне кажется.

VAT

  • Сообщений: 1453
    • Просмотр профиля
    • E-mail
Re: Мягкая атака
« Ответ #108 : Июля 19, 2006, 01:05:43 am »
Medved:
Ничего не понял про дифференцирование.(. Дифференцировать спад результата однополупериодного выпрямления?  

мк потянет без тормозов, на avr, к примеру, если мне не изменяет память, программная реализация 16бит умножения - 3мкс. Деление, ну может 200 (можно глянуть на сайте производителя готовые подпрограммы, не помню), все равно мелочь, по сравнению потерями  на однополупериодноное  выпрямление (милисекунды).
МА на фоне уже звучащей ноты от уровня этой ноты - думаю будет звучать как оригинальный звук, а не как МА. тем более что критерий изменения алгоритма от громкости 1й ноты не определить.
Я все-таки не трогал  бы затухание - это тема  чуть менее сильная чем атака - или нужен вариант его регулирования от невлияния на исходное. тоже было-бы интересно.  Тут люди бьются за сусейн в соседней ветке..).  Убрать усиление в паузе до 0 можно и шумодавом. Подтянуть можно компрессором, но это вносит свои искажения в динамику, хорошие или плохие, но что-то вносится, иначе бы не было ручки "Релиз" на компрессорах.

На скорую руку попробовал нарыть Реактор - не вышло. Ладно может на рынок выберусь в выходные.

Medved

  • Сообщений: 4534
  • Ле... Лети!
    • ICQ клиент - 467329541
    • Просмотр профиля
    • E-mail
Re: Мягкая атака
« Ответ #109 : Июля 19, 2006, 12:28:51 pm »
Диз, затем, что будет большая потеря точности в вычислении производной. А может и не будет- надо пробовать. У контроллеров с 8 битным цапом скольки битная арифметика-то? 20кгц- чтобы на один полупериод самой выскокой ноты было минимум 20 значений для вычисления производной. Сейчас нарисую картинку и всем сразу станет все понятно.

Цитировать
МА на фоне уже звучащей ноты от уровня этой ноты - думаю будет звучать как оригинальный звук, а не как МА. тем более что критерий изменения алгоритма от громкости 1й ноты не определить.  
Надо попробовать. Поэксперементируй в звуковом редакторе. Я думаю иначе. Жопой чую, как говорится :)



Medved

  • Сообщений: 4534
  • Ле... Лети!
    • ICQ клиент - 467329541
    • Просмотр профиля
    • E-mail
Re: Мягкая атака
« Ответ #110 : Июля 19, 2006, 01:12:57 pm »
Вот картинка с выхода аналогового выпрямителя. Никакой задержки он не несет.
Красная линия- выход цапа.
Дальше мы дифференцируем в МК и находим первую красный кружок (как только мы с уверенностью можем сказать, что производная сменила знак с плюса на минус, значит...). Выдаем входное значение на выход. Считаем произодную дальше и ждем выполнение условия смены знака с + на -. Натыкаемся на синий кружок, но отбрасываем его из-за слишком большой разницы амплитуды с предыдущем значением вниз ( Именно вниз, т.к. вверх мы не будем отслеживать скачки амплитуды, иначе ниче работать не будет. Можно будет подобрать допустимый порог дрожания, допустим 5-7% (