Звуки и звуковые схемы

Автор LongShad, 05 февраля 2011 13:52:31

« назад - далее »

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

Soul_Tear

Цитата: Shaver от 11 февраля 2013 18:05:55
Я писал, что "кажется разобрался", когда обнаружил такую закономерность: amb_low1.wav и другие "незвучащие" звуки - двухканальные, т.е. СТЕРЕО. А схема, в которую я их тулил использует МОНО-звуки (с ними я не испытывал проблем).
Ни в чём до конца не уверен, но amb_low1(2,3,4).wav заработали только после доп.редактирования схемы m01night:
строчку       mono_loop 0 0
заменил на  poly_loop 2 5000 6000


Ты говорил, что только изменил имена файлов, то есть если в схеме было написано:
//NIGHT
schema m01night
archetype AMB_M01
mono_loop 0 0
volume -2200 //was -3000
night1 night2 night3 night4 night5

То новый вариант стал бы:
//NIGHT
schema m01night
archetype AMB_M01
mono_loop 0 0
volume -2200 //was -3000
amb_low1 amb_low2 amb_low3 amb_low4 amb_low5

Как тогда каналы могли изменится?

Из каких-то опытов со схемами в прошлом, я решил, что mono_loop нужно для мелодичного эмбиента, а poly_loop для вспомогательных звуков. Теперь я вообще ничего не понимаю. Но благо проблем с этим не было.



Цитироватьвсе схемы в одном текстовом файле.


Возьму, спасибо. :)

Zontik

#46
Цитироватьmono_loop 0 0
volume -2200 //was -3000
night1 night2 night3 night4 night5
В оригинальных схемах действительно так написано?
Дело в том, что я всегда был уверен: mono и poly не имеют отношения к количеству каналов. Mono используется для звуков, которые всегда одинаковы (одна схема = 1 звуковой файл), а poly - в случаях, подобных указанному, т.е. когда файлов несколько и они выбираются случайно. Этого мало, в 1.18 еще был неприятный глюк: первое имя файла в такой строчке игнироруется движком и не проигрывается никогда. Чтобы ошибки не было, имя приходилось повторять:

night1 night2 night3 night4 night5
- night 1 звучать никогда не будет;
night1 night1 night2 night3 night4 night5 - вот это правильно.

Не знаю, исправили ли это в 1.19.

А цифры 5000 и 6000 в примере немного выше означают диапазон между звуками в миллисекундах. То есть между двумя соседними звуками должно пройти от 5 до 6 секунд.

В общем, я всегда свои схемы оформлял именно так (mono_loop для одиночных повторяющихся звуков, poly_loop для случайно выбираемых). Проблем не было ни разу. А вообще если подумать, то если движок способен воспроизводить как моно, так и стерео - зачем ему указывать напрямую? Разрядность же не указывается, частота дискретизации тоже не указывается. Движок просто проигрывает такой звук, какой попался... или не проигрывает, если не может.

Вот нашел в подтверждение своей версии:

Цитироватьmono_loop 0 0       //WAS poly_loop 2 3000 4500
volume -2400
windstil          //WAS wind1 wind2 wind3

Было три файла - poly, стал один - mono.
А в выбранной схеме night1 2 3... - похоже, просто вышла ошибка при замене. Не у тебя, у Looking Glass.

Хотя есть и опровергающий мою версию пример:
Цитировать
poly_loop 2 5000 5020
loop_count 12
bellchur

Хотя здесь явно какой-то особый случай, не понятный мне до конца (loop_count 12 - видимо, колокол должен пробить полночь).

Наконец, сделал поиск по слову mono_loop. Ну, похоже, ты был прав, а я ошибался. В большинстве схем с mono также по несколько файлов. Но зачем это вообще сделано - мне понять уже не дано.
Дайте глазам отдохнуть! Тёмное место

Shaver

#47
Цитата: ZontikА цифры 5000 и 6000 в примере немного выше означают диапазон между звуками в миллисекундах. То есть между двумя соседними звуками должно пройти от 5 до 6 секунд.
5000 - задержка до начала воспроизведения, 6000 - интервал между звуками. (см.ДромЕдовские заметки часть 2)
Это верно как для моно так и для поли.

Ещё о разнице и сходстве:
mono_loop 5000 6000
poly_loop 1 5000 6000

Winter Cat на ttlg утверждал, что в схемах эти строки будут иметь абсолютно одинаковый эффект. Единичка после mono отсутствует потому, что моно и есть моно. После poly_loop ставится двойка (может бывает и больше, не знаю). Но чего именно два - я не знаю (точно не кол-во каналов воспроизводимого звука).

Конкретно по моей проблеме: есть подозрение, что amb_low1-4.wav не работали в схеме m01night из-за того, что они длиннее (продолжительнее), чем night1-5.wav и могли "наложится" друг на друга.
Сильно увеличивая второй параметр в mono_loop смог запустить даже самые длинные стерео звуки.

Ну и под занавес исследований звуки amb_low1-4.wav почему-то заработали в схеме:
schema m01night
archetype AMB_M01
mono_loop 0 0
volume -2200
amb_low1 amb_low2 amb_low3 amb_low4

в которой до этого намертво не звучали.
А что сделал? Вернул назад строку mono_loop 0 0(вместо poly_loop 2 5000 6000)
Ощущение такое, что изменения срабатывают после второй, а то и третьей перезагрузки схем.
Могу обьяснить это только глюками редактора, но это явление (весьма стабильное кстати) сводит на нет все мои исследования.

Soul_Tear

#48
Цитата: Shaver от 12 февраля 2013 15:27:52
Могу обьяснить это только глюками редактора, но это явление (весьма стабильное кстати) сводит на нет все мои исследования.

Проблема была в твоей некомпетентности в вопросе. Редактор ничего такого со схемами не делает. Он крашился раньше из-за недопустимых операций и багов, в 1.19 недопустимые операции сократились либо повысился лимит для их возникновения, а баги были пофиксены. Ты ошибся на каком-то этапе, но теперь получилось, потому что эмоции уляглись и ты спокойно повторил операцию.

Кстати как ты мог переименовать файлы night на amb_low, если последние итак лежат в папке SFX? Ты удалил оригинал или создал новые файлы в другой папке?

И что ты сделал с этой схемой?
//INSIDE LOOP
schema m16insideL
archetype AMB_M16
poly_loop 2 5000 6000
volume -1000
no_repeat
amb_low1 amb_low2

Получается у тебя разные схемы ссылались на одни и те же файлы?

До сих пор не ясен смысл этого "эксперимента", вынос мозга на лицо, а пользы никакой. Или все-таки есть?

Soul_Tear

#49
Цитата: Zontik от 12 февраля 2013 09:29:45
Этого мало, в 1.18 еще был неприятный глюк: первое имя файла в такой строчке игнироруется движком и не проигрывается никогда. Чтобы ошибки не было, имя приходилось повторять:

night1 night2 night3 night4 night5
- night 1 звучать никогда не будет;
night1 night1 night2 night3 night4 night5 - вот это правильно.

Во всех ОМ схемах нет повтора первого файла. И как бы они не проигрывались, если их было слышно в игре? Сейчас проверил файлы с 1, все я их точно слышал раньше. В противном случае это были бы совершенно новые звуки для слуха.

__________________

Что касается poly_loop 2 - что означает "2"?

Shaver

Цитата: Soul_Tear от 12 февраля 2013 16:02:47Кстати как ты мог переименовать файлы night на amb_low, если последние итак лежат в папке SFX?
Вобще-то легко, но я этим не занимался.

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

Soul_Tear

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

Shaver

#52
Цитата: Shaver от 12 февраля 2013 15:27:52
Цитата: ZontikА цифры 5000 и 6000 в примере немного выше означают диапазон между звуками в миллисекундах. То есть между двумя соседними звуками должно пройти от 5 до 6 секунд.
5000 - задержка до начала воспроизведения, 6000 - интервал между звуками. (см.ДромЕдовские заметки часть 2)

Ещё раз перечитал тему на ttlg:
Цитата: Winter CatFor example the schema, that has poly_loop 2 2000 7000, after typing reload_schemas in its Schema->Loop Params will have:

Flags: 1
Max Samples: 2
Interval Min: 2000
Interval Max: 7000

Так подумал: а одно другому не почти не противоречит. Но правильнее то, что описал Zontik.

Zontik

Огромная часть того, что я знаю, я знаю именно из постов на TTLG. К сожалению, не все известные мне вещи я проверял лично. В частности - назначение слов mono и poly.
ЦитироватьMax Samples: 2
Зашевелилась догадка, что это может быть число одновременно воспроизводимых звуков (именно из данной схемы). Звуки-то могут оказаться длиннее интервала между ними. В этом случае, очевидно, возможно разрешить нахлест.
Дайте глазам отдохнуть! Тёмное место

Zontik

После полутора часов битья головой об стенку родился вот этот текст, где есть ответы на многие заданные выше вопросы. Аргументированные поправки и дополнения приветствуются.

Параметры звуковых схем

//Damaged cable sound
- двойной слэш в начале означает комментарий. Может содержать любой текст, даже русский.

schema e_static
- имя схемы, которое используется в качестве конкретного архетипа. На него ссылается связь SoundDescription; оно же используется при заполнении окошка свойства AmbientHacked.

archetype AMB_MIRROR
- имя родительского архетипа. Может и не указываться; в этом случае движок при загрузке схем сам разместит вновь созданный архетип где попало.

poly_loop 2 500 1000
- самая проблемная строка. Слово poly означает, что несколько файлов, указанных в данной схеме, могут проигрываться одновременно. Двойка  означает количество таких звуков: если указать там 4, смогут проигрываться 4 звука, и так далее. Число меньше двойки, очевидно, использовать смысла нет. Два последних числа описывают задержку между началом двух последующих звуков: первое число - минимальная задержка, второе - максимальное (оба в миллисекундах, то есть 500 означает 1/2 секунды). Конкретная величина из диапазона между максимальным и минимальным выбирается случайным образом. Если выставить их оба на единицы (минимально возможная задержка), все разрешенные параметром 2 звуки начнут звучать практически одновременно. Если поставить их в ноль - будет повторяться только один звук.

mono_loop 2000 3000
- строка для зацикленных звуков. Используется либо она, либо poly_loop. Mono означает, что в каждый момент времени будет звучать только один звук. Здесь два последних числа также означают диапазон между минимальной задержкой и максимальной, но это задержка после завершения звука. Минимальная задержка 2000 фактически означает, что между завершением одного файла и началом другого пройдет минимум две секунды - эти числа имеют иное значение в параметре poly_loop, где минимальная задержка в 2000 будет означать разницу минимум в две секунды между НАЧАЛОМ звучания двух последующих файлов (то есть при достаточной длине они перекроются).
Если обе задержки нулевые и файл один - это классический случай зацикленного фрагмента, звучащего без пауз. Если файлов больше одного - ни в коем случае не используйте два нуля: это приведет к тому, что будет все время повторяться только один наугад выбранный файл. Поставьте хотя бы две единицы для создания минимально возможной паузы.
Если в списке файлов указан только один и диапазон не нулевой - он будет повторяться с задержкой, выбранной из интервала между двумя последними числами.

play_once
- эта строка используется для разовых случайных звуков и не используется совместно с poly_loop или mono_loop. Она означает, что за всю игру звук может быть проигран только один раз. Пока не установлено, как поведет себя данная схема при попытке повторного использования разового звука в другой миссии той же кампании, использующей тот же gamesys. Возможно, ограничение накладывается только на текущую миссию.

no_repeat
- может использоваться совместно с poly_loop или mono_loop. Наличие этого параметра означает, что при наличии нескольких файлов в списке ни один из них никогда не будет повторяться дважды подряд. В случае двух файлов они будут тупо чередоваться, в случае трех и больше возможны более интересные варианты. Чередование тогда происходит случайным образом.

pan_range 2500
- задает диапазон псевдостереоэффекта, который выглядит несколько странно: при активации звука он может звучать громче то в левом ухе, то в правом, но до повторной активации это уже не изменится. Если звук начал звучать в правом ухе, то в правом он так и останется до отключения. В следующий раз может быть по-другому. Чем больше число, тем более явно выражен этот странный эффект. Разумеется, имеет только смысл только для звука с флагом Environmental.

volume -1000
- число задает величину уменьшения громкости относительно оригинального файла. -1000 уменьшает громкость примерно вдвое, но зависимость, кажется, нелинейная. Шкала начинается от -1 (что означает отсутствие изменений вообще).

static1 freq 2
static2 freq 1

- имена файлов (static1, static2) с указанием относительной частоты повтора (последнее можно не указывать). Что означает относительной? Файл с частотой freq 2 будет выбираться случайным образом вдвое чаще, чем файл с частотой freq 1, но если заменить 2 на 20, а 1 на 10 - то при отсутствии других файлов и других частот это ничего не изменит.
В именах файлов расширения не указываются.
Дайте глазам отдохнуть! Тёмное место

Dront

Zontik, как всегда, всё описано точно и детально  :up:
Одну вещь забыл уже сам: имя схемы и имя родительского архетипа задаются сначала в .sch-файле, потом пишутся вручную в иерархии? Или наоборот? Или порядок не имеет значения, главное, чтоб было и то, и другое, и тогда можно давать команду reload_schemas?
"You cannot run from life as you did from us, Garrett! Life has a way of finding you..."
"Beware the dawn of the Metal Age."

Zontik

#56
Сам не помню. Мне кажется, вручную в иерархии писать вообще не обязательно - если раздел не существует, он будет создан автоматически. Но это же так легко проверить.
С другой стороны, если создать раздел в иерархии заранее, чему это может навредить? Посмотрим на это так. Когда миссия в разработке, все время добавляются новые схемы. При перезагрузке раздел уже существует и никому не мешает. Значит, создать его заранее, пусть даже и пустой - стопроцентно безопасный вариант.
Вчера меня заклинило на нулях после mono_loop. Прошло много времени, прежде чем понял основной принцип: отсутствие паузы не дает файлам чередоваться. Фиг его знает, почему так. Причем 1.19 ничего в этом плане не улучшил.
После этого решил: ну все, хватит. Сел и написал этот текст, чтобы больше никогда на этом не спотыкаться. Потерял еще час, но зато уж точно это последнее потерянное по данному поводу время.
Между прочим, обнаружил у себя в старых миссиях кучу неправильных схем, где файлы вроде бы должны чередоваться, но не могут. Из-за их похожести на слух распознать ошибку практически невозможно.
Дайте глазам отдохнуть! Тёмное место

Soul_Tear


Shaver

Большое спасибо.

Отличный материальчик в раздел DromEd/Tutorials.

Zontik

Подождите пока класть это в раздел DromEd/Tutorials.
Вчера проверял на движке 1.20. Некоторые вещи изменились; так, схемы со строкой poly_loop 2 1 1 перестали работать корректно - вместо звуков раздавались какие-то хрипы. Было ощущение, что  движок просто не успевает их обрабатывать. Я попробовал вернуть значения задержек к исходным - poly_loop 2 0 0, и только тогда наконец схемы зазвучали.
У меня осталось стойкое ощущение, что невозможность подставлять в эту формулу нули была, в сущности, багом, который наконец-то исправили.
Дайте глазам отдохнуть! Тёмное место