Бета 1.3.0.1041 доступна по ссылке
http://blackstrip.ru/paintcad.exe
Изменения:
- qmpot-эффекты: в разделе "Математика" добавлены эффекты: Нормированный квадрат, Нормированный квадратный корень, Модуль, Инверсия (амплитудная)
- qmpot: в варианты вставки звука из буфера в текущий звук добавлен вариант вставки с операцией нормированного перемножения "Нормированное (Звук x Буфер)"
- исправлена ошибка сдвига координат курсора при сохранении/загрузке параметров предыдущей сессии
- qmpot-скрипты: добавлена команда IP (instrument position) с параметрами "#инстр, X в мм, Y в мм" для расстановки инструментов в пространстве вокруг слушателя (влияет на создаваемый скриптом стереозвук), учитывает разницу пути звуковых волн при достижении левого и правого уха, а также диаграмму направленности человеческого уха (для головы с расстоянием 18 см от уха до уха).
Подробнее:
В разделе эффектов qmpot есть подраздел Математика:
В нем появилось 4 эффекта:
- нормированный квадрат - возводит выделенный фрагмент звука в квадрат и сжимает его обратно по амплитуде (нормирует) по уровню текущей максимальной амплитуды.
- нормироанный квадратный корень - аналогичный эффект, но из каждого отсчета звука извлекается корень
- модуль - отрицательные полупериоды звука перекидываются в положительную область (все отсчеты - берутся по модулю)
- инверсия - эквивалент эффекта "Громкость" при уровне "минус 100%", т.е. все что было отрицательным - становится положительным, а все что было положительным - становится отрицательным
Эти эффекты создают страшные шипения (как искажения через рацию или при плохой связи между космическими кораблями), а еще можно перемножить две разные песни и послушать их одновременно со странным звучанием.
Эффект с нормированным перемножением также можно теперь использовать при вставке звука по Ctrl+V - для этого есть отдельный пункт наряду с обычным перемножением:
Из багов был замечен и исправлен баг паинткада (причем в предыдущей релизной версии 1.2.4 его не было): если оставить курсор в положении 0:0 на рисунке, то после выхода и загрузки паинткада снова - курсор встанет в 1:1 из-за неправильных округлений. Исправлено.
Теперь стала возможна расстановка инструментов в пространстве вокруг слушателя!
QMP-командой "IP #инстр, X в мм, Y в мм" (от слова "instrument position") можно "установить" конкретный загруженный инструмент в пространстве. Пространство это двухмерное, ось X проходит через вашу голову слева направо, а ось Y - также через голову сзади вперед.
Чтобы разместить первый инструмент спереди вас в полуметре от вашей головы - надо вписать в скрипт команду:
IP 1,0,500
При этом паинткад считает, что ваша голова с расстоянием 18 см от уха до уха. Тогда при любом положении источника звука можно посчитать пути звука в пространстве (при скорости 330 м/с) и сдвинуть левый и правый канал на соответствующие задержки. Как показали тесты, эффект работает (как, собственно, он работает и во всех современных играх со стереозвуком). Но при этом звук "сзади" и звук "спереди" ничем не отличается.
Чтобы увеличить реалистичность звучания - пришлось сэмулировать направление, в котором уши слушают (диаграмму направленности). Нарыл картинку в инете:
Это вид сверху на человека. Вот эта красная "фасолина" посередине - диаграмма направленности обоих ушей. Слева спереди и справа спереди человек слышит отлично. Просто спереди - похуже (там левое ухо своим локатором уже не достает, и правое уже не достает). Сзади - очень плохо (раз в 4-5 хуже). Если ослабить звуки в соответствии с диаграммой направленности - то звук сзади будет приглушен, и покажется что он действительно сзади, особенно если он меняет положение в пространстве.
Для расчета ослаблений надо было придумать из этого графика отдельные диаграммы направленности для каждого из ушей. Если взять график "кардиоиды" и чутка его подтянуть в задней части (где нулевые значения), а также повернуть все это дело градусов на 20 вперед от положений "строго влево" и "строго вправо" - то получится что надо:
Левое ухо:
Правое ухо:
Формулы были введены в паинткад и теперь используются при каждой вставке командами P, PL, PR моно и стерео инструментов в стерео-звук (если перед этим была вызвана команда IP для проигрываемого инструмента).
Пример первый - Передвигаем барабан вокруг головы:
Первая точка
IP 1,0,500 - устанавливаем барабан спереди по центру
P 1,0,0,0 - играем
SO 0.5S,1 - сдвигаем место вставки на полсекунды относительно текущего
Вторая точка
IP 1,500,500 - устанавливаем барабан спереди справа
P 1,0,0,0 - играем
SO 0.5S,1 - сдвигаем место вставки на полсекунды относительно текущего
Третья точка
IP 1,500,0 - устанавливаем барабан строго справа
P 1,0,0,0 - играем
SO 0.5S,1 - сдвигаем место вставки на полсекунды относительно текущего
И так далее по часовой стрелке вокруг головы. Полный скрипт:
Код: Выделить всё
//введите сюда QMP-команды
N 11025,16,2,4S
L 1,"[Drum]LBNGO60.ins"
IP 1,0,500
P 1,0,0,0
SO 0.5S,1
IP 1,500,500
P 1,0,0,0
SO 0.5S,1
IP 1,500,0
P 1,0,0,0
SO 0.5S,1
IP 1,500,-500
P 1,0,0,0
SO 0.5S,1
IP 1,0,-500
P 1,0,0,0
SO 0.5S,1
IP 1,-500,-500
P 1,0,0,0
SO 0.5S,1
IP 1,-500,0
P 1,0,0,0
SO 0.5S,1
IP 1,-500,500
P 1,0,0,0
X
Окно с введенным и выполненным скриптом:
Вот можно послушать результат:
http://blackstrip.ru/tmp/pcw130/stereodrum.wav
Пример второй - перед нами стоят части барабанной установки (электронный кик, тарелки и том-том) и каждую слышно со своего направления:
Беру старый пример из трех инструментов: №1, №3, №4. Делаю из него стерео простым добавлением трех команд расстановки:
L 1,"[Drum]KICK264.ins" - кик
L 3,"[Drum]LBNGO60.ins" - том-том
L 4,"[Drum]CHH__60A.ins" - тарелки
IP 1,-500,500 - кик слева спереди
IP 3,500,500 - том-том справа спереди
IP 4,0,500 - тарелки строго спереди
Полный скрипт:
Код: Выделить всё
//введите сюда QMP-команды
N 44100,16,2,8S
L 1,"[Drum]KICK264.ins"
L 3,"[Drum]LBNGO60.ins"
L 4,"[Drum]CHH__60A.ins"
ST 1,-12
IP 1,-500,500
IP 3,500,500
IP 4,0,500
PL 1,0,0S,0.8S,0
PL 1,0,0.25S,0.8S,0
PL 1,0,0.75S,0.8S,0
PL 1,0,0.906S,0.8S,0
PL 1,0,1S,0.8S,0
PL 1,0,1.25S,0.8S,0
PL 1,0,1.75S,0.8S,0
PL 3,0,0.5S,0.8S,0
PL 3,0,1.5S,0.8S,0
PL 4,0,0.5S,0.8S,0
PL 4,0,1.5S,0.8S,0
PL 1,0,2S,0.8S,0
PL 1,0,2.25S,0.8S,0
PL 1,0,2.75S,0.8S,0
PL 1,0,2.906S,0.8S,0
PL 1,0,3S,0.8S,0
PL 1,0,3.25S,0.8S,0
PL 1,0,3.75S,0.8S,0
PL 3,0,2.5S,0.8S,0
PL 3,0,3.5S,0.8S,0
PL 4,0,2.5S,0.8S,0
PL 4,0,3.5S,0.8S,0
PL 1,0,4S,0.8S,0
PL 1,0,4.25S,0.8S,0
PL 1,0,4.75S,0.8S,0
PL 1,0,4.906S,0.8S,0
PL 1,0,5S,0.8S,0
PL 1,0,5.25S,0.8S,0
PL 1,0,5.75S,0.8S,0
PL 3,0,4.5S,0.8S,0
PL 3,0,5.5S,0.8S,0
PL 4,0,4.5S,0.8S,0
PL 4,0,5.5S,0.8S,0
PL 1,0,6S,0.8S,0
PL 1,0,6.25S,0.8S,0
PL 1,0,6.75S,0.8S,0
PL 1,0,6.906S,0.8S,0
PL 1,0,7S,0.8S,0
PL 1,0,7.25S,0.8S,0
PL 1,0,7.75S,0.8S,0
PL 3,0,6.5S,0.8S,0
PL 3,0,7.5S,0.8S,0
PL 4,0,6.5S,0.8S,0
PL 4,0,7.5S,0.8S,0
X
Послушать результат можно здесь:
http://blackstrip.ru/tmp/pcw130/stereoloop.wav
Главное правило: инструменты могут быть моно (при вставке в стереозвук они автоматом вставляются в оба канала), но результирующий звук должен быть обязательно двухканальный (стерео), иначе задержки будут рассчитываться, но вставка по командам P, PL, PR будет производиться только в этот единственный моно-канал и этого трехмерного эффекта звучания, конечно же, не получится.