![]() |
Звуки вагонов
После появления моей нарезки звуков и небольшого скрипта, их запускающего, назрела необходимость темы о скриптовых звуках стука.
Вообще, кончно, можно попытаться делать звуки телег стандартными tracksound'ами, но получить реалистичные звуки внутри вагона при этом вряд-ли удастся (предназначенный для этого тег mufle может только уменьшать громкость внешних звуков, да и то не всегда корректно) Для того, чтобы отключить дефолтный стук, достаточно строки в trainzoptions.txt -disablerailjointsound Но кроме этого надо убирать и tracksound'ы телег. По дефолту (если не прописаны свои) тележкам прописывается <kuid:-3:10194>, так что если Вы радикально решили полностью убрать встроенные звуки, то открываем этот куид на редактирование, удаляем из него все звуки, а в config.txt оставляем только kuid <kuid:-3:10194> kind "tracksound" asset-filename "default" (не понравится - возвращайте куид к оригиналу) Если не хочется портить этот куид, просто поставьте на тележки вагонов аналогичные "пустые" tracksound'ы. Теперь по звукам. Что я нкашёл (это чисто опытные факты, не более) из позволяющего более-менее снизить глючность скриптовых звуков 1) желательно, чтобы максимальная громкость звука не превышала 70-75дБ . Если Вам покажется это слишком тихо, то всегда можно увеличить громкость колонок 2) в начале звука делать плавное увеличение уровня от 0 до обычного (втечение 0.2-0.3 секунды), а в конце - от обычного до 0 Пользуясь этими двумя правилами, удалось сделать более-менее рабочий набор звуков под скрипт, запускающий их в зависимости от скорости вагона В дальнейшем, если появится материал и удастся выделить время, подумаю над скриптом, который бы запускал разные звуки в зависимости от вида (1 или (2 и 3) или 4) а также от нахождения в вагоне. |
ну а по существующему скрипту...
Итак, мы сделали звук внешнего вида. Определили точное время между перестуками - они хорошо видны (и в звуковом редакторе обычно есть возможность измерить время между ними). Затем делим длину вагона на это время (в секундах), и получаем скорость вагона в метрах в секунду. Для того, чтобы скрипт понял этот звук, необходимо присвоить ему имя vel_outside_*.wav где * - округлённая скорость поезда в метрах/секунду. Далее, чтобы добавить в скрипт 1) открываем файл krasn_strela.gs в блокноте... 2) ищем строку thread void VelocitySoundLooper() ниже в строке int[] soundlib=new int[8]; вместо 8 ставим общее число наших звуков далее в колонку soundlib[0]=2; soundlib[1]=7; soundlib[2]=14; soundlib[3]=15; soundlib[4]=16; soundlib[5]=19; soundlib[6]=22; указываем в "слотах" скорости, которые есть в именах звуков вида vel_outside_*.wav . Если требуется, добавляем новых. А в той части, где if(vel>soundlib[6]) Sleep(World.PlaySound(MyAsset1, "sound/vel_outside_"+soundlib[6]+".wav", 1.0f, 14.0f, 100.0f, me, "a.bog0")-0.2); else и т.п. можем добавить ещё таких строк, для новых слотов. В дальтнейшем я это изменю, но пока так... |
[B]TRam_[/B], лови звуки переезда. Обозначение:
[начальная скорость]-[конечная скорость]_[in/out].wav in - приближение к переезду out - удаление от. [url]http://stream.ifolder.ru/16419560[/url] |
лови результат
[url]http://dump.ru/file/4318201[/url] правда, слишком длинные звуки убивают звуковой движок ТРС на**р, но можешь попробовать. Если изменение громкости всё-таки не заработает, делай свою модель маркера с точкой привязки. (ну и проверь логику определения направления движения состава - чувствую там ошибка закралась) |
Эффект Доплера — скриптами? А тут понимают толк в извращениях, ничего не скажешь :)
|
[QUOTE]А тут понимают толк в извращениях, ничего не скажешь[/QUOTE]не, тут человек скриптовать просто учится. Ну и дал ему конструктор, раз уж просит уже год
|
Аа, а то я уже испугался :)
|
Смех - смехом, а Ауран походу не собирается звуковой движок менять.
|
мы это знаем. В джете изначально не было заложено ничего для управления звуками. Дефолтный стук - и тот сделан аналогично вышеприведённому триггеру (содержимое data.ja об этом говорит), только звуки там корче
|
Пока звенеть заставить не удалось :(
Хотя бы просто звенеть. Есть какая-то возможность кидать на экран значения переменных из скрипта в риалтайме? |
[QUOTE]Пока звенеть заставить не удалось[/QUOTE]ну попробуй задом маркер поставить... У меня звенело.
Вообще есть способы, связанные с Interface.Log() и им подобные, но мне их заставить работать не удалось Я по-дедовски делаю, с постпроверкой (всё равно скрипт после этого переделывать) 1) прописываем "-enablescriptmessagelogging" в трейнзопшонзах 2) в нужном месте делаем PostMessage(me, "!!!!!!!!!!1!!!!!",<одна нужная переменная>+"__"+<вторая нужная переменная>,0.0); После сессии залезаем в jetlog.txt и ищем наши восклицательные знаки |
Мозг взорвался. А вот это нам помочь не может?
[code]public native void PlaySoundScriptEvent(string soundTrigger) Parameters soundTrigger = Name of the sound event to start playing, this equates to the trigger tag of the sound script subcontainer in config.txt. Returned Value None Syntax PlaySoundScriptEvent("dayloop"); Notes Plays the specified sound event from the asset's SoundScript. SoundScripts are defined as sub-containers in the soundscript container of the asset's configuration. For details on creating assets with SoundScripts, see the Content Creators Guide. This method will start playing the sound. Depending on the SoundScript configuration, the sound will either be played just once or played continuously in a looping cycle such that StopSoundScriptEvent() will need to be called to stop it.[/code] |
Подойдет, почему бы и нет.
[QUOTE=Gregory_777;154732]Смех - смехом, а Ауран походу не собирается звуковой движок менять.[/QUOTE] Здесь вновь собираются забивать гвозди микроскопом? :D |
[QUOTE]Есть какая-то возможность кидать на экран значения переменных из скрипта в риалтайме?[/QUOTE] Interface.Print(string); Выводит сообщение в пейджер. Только аккуратно, не забудь в релизе вывод убрать. И их число там ограничено (несколько тысяч).
|
[QUOTE]Мозг взорвался. А вот это нам помочь не может?[/QUOTE]я что-то не слышал, что отдельный звук из саундскрипта может быть остановлен. Так что разницы между PlaySoundScriptEvent и PlaySound никакой, а мороки больше
|
StopSoundScriptEvent(string)
|
StopSoundScriptEvent(string)
звук мгновенно останавливается? |
Вроде да. Но в скрипте он всегда закольцованный, и это ничем не убрать.
|
И громкость регулировать нельзя, придётся делать точки привязки на самом маркере. Я думаю для изготовления маркера мне gMax'а хватит. Ща попробую.
[QUOTE=genesis;154764]Здесь вновь собираются забивать гвозди микроскопом? :D[/QUOTE] Почему? Просто хотим сделать переезд с имитацией допплера. Собственно, переездный звонок - это единственное, что слышно в вагоне более-менее отчётливо, и когда он звенит без допплера это выглядит не айс. Небольшая имитация не помешает. Вот допплер от колпар, свитска, тифона, МВ, дизеля - это уже из области фантастики, пока Ауран не сделает нормальную звуковую модель. Кстати, а что такое SoundScript? Чот обнюхал весь Trainzdev - ничего внятного не нашёл. |
TRam Как продвигается разработка скрипта?
|
пока никак. Учёба...
|
Понятно,а с имитацией доплера у переезда.....что-то получилось?
|
TRam_ приветствую! В ходе эксперементов со скриптом выяснилось,что он не может работать в тех моделях,где отсутствуют точки привязки задней и передней сцепки вагона.....как это победить? Ведь все модели с интерьером(за исключением некотроых) именно такие......
|
открыть скрипт в блокноте, и поискать в нём строки типа
World.PlaySound(*,* <и так далее> *,"[U]a.имя точки привязки[/U]") и заменить a.имя точки привязки на a.bog0 или a.bog1 т.е. на World.PlaySound(*,* <и так далее> *,"[U]a.bog0[/U]") |
Значит ситуация такова-в скрипте всё подправил как описано выше,но осталась ошибка.....
[URL=http://radikal.ru/F/s41.radikal.ru/i091/1005/2d/a383497a3b2b.jpg.html][IMG]http://s41.radikal.ru/i091/1005/2d/a383497a3b2bt.jpg[/IMG][/URL] При этом звук внутри салона не воспроизводится.... |
[QUOTE=Диспетчер;158706]Понятно,а с имитацией доплера у переезда.....что-то получилось?[/QUOTE]Фигня получается. Если привязывать звук к маркеру переезда (чтобы правильно менялась громкость), то "допплер" появляется и снаружи. Если на виде "2" это ещё терпимо, то на виде "4" - убивает: создаётся ощущение, что звенит поезд.
Если воспроизводить звук внутри вагона, то приходится высчитывать громкость в зависимости от расстояния до маркера. К тому же нужен ещё один "запускающий" маркер, который надо ставить ~ за 50 метров до переезда, чтобы начать воспроизведение звука. Да и точность попадания "перегиба" характеристики допплера на переезд недостаточно. Может быть так: переезд давно пройден, а звук всё ещё "приближается". Это происходит, когда поезд движется с ускорением, а поскольку переезды в основном вблизи станций, то результат соответствующий. |
[QUOTE=Gregory_777;177546]Фигня получается. Если привязывать звук к маркеру переезда (чтобы правильно менялась громкость), то "допплер" появляется и снаружи. Если на виде "2" это ещё терпимо, то на виде "4" - убивает: создаётся ощущение, что звенит поезд.
Если воспроизводить звук внутри вагона, то приходится высчитывать громкость в зависимости от расстояния до маркера. К тому же нужен ещё один "запускающий" маркер, который надо ставить ~ за 50 метров до переезда, чтобы начать воспроизведение звука. Да и точность попадания "перегиба" характеристики допплера на переезд недостаточно. Может быть так: переезд давно пройден, а звук всё ещё "приближается". Это происходит, когда поезд движется с ускорением, а поскольку переезды в основном вблизи станций, то результат соответствующий.[/QUOTE]Эх жалко......Ауран,когда же займётся звуком.....:russian: |
[QUOTE]Ауран,когда же займётся звуком.....[/QUOTE]
Да никогда.;) |
Зато [URL="http://stream.ifolder.ru/17739731"]вот тут моя версия[/URL] скрипта TRam_ (надеюсь, ты не против, дорогой) и моя же версия внутренних звуков купе/плацкарта (на материале Бармалея, который очень надеюсь, тоже не против).
Заметил очень неприятную штуку: движок TRS очень не любит воспроизводить в тредах большие (больше примерно 1мБ) звуки: он их либо воспроизводит реже (то есть по окончинии одного loop следующий начинается не сразу, а с задержкой, которая зависит от размера звука) или вообще не воспроизводит... К тому же на скорости в вагоне постоянно присутствует какой-то низкочастотный шум, даже если вообще все звуки отключены. Дать бы им там в Ауране молотком по голове за такие фокусы... |
[QUOTE](надеюсь, ты не против, дорогой)[/QUOTE]чтоб я был против доделки своих экспериментов? Да кому они тогда нужны...
|
Ребят,подскажите что нужно добавить в скрипт для воспроизведения дополнительных звуков салона,не связанных со движением поезда,напр. звуков поездного радио?
|
Написать скрипт и вставить звуки.
|
Посмотри, как работает радио в кабине. Пишешь thread void функцию, которая с рандомными задержками воспроизводит рандомные звуки из списка.
Только звуки должны быть строго одного формата (моно, 44100Гц, 16 бит WAV) и по размеру не больше 1Мб (это примерно 10 сек в данном формате). |
[QUOTE=Evgenyi;177897]Написать скрипт и вставить звуки.[/QUOTE]Скорее всего дописать скрипт.....:)
|
Gregory_777 Спасибо большое за совет!
|
thread void Radio_UKV()
{ if(true) { while(true) { int radio_m = Math.Rand(0,24); Sleep(Math.Rand(10,22)); Sleep(World.PlaySound(asset,"sound/rm_" + radio_m + ".wav",0.9f,5.0f,5.0f,loco,"a.cabfront")); Sleep(Math.Rand(25,98)); } } } Правельные строки? Точка привязки кабины интерьера вагона правильна? |
1) если это скрипт вагона, то лучше
Sleep(World.PlaySound(asset,"sound/rm_" + radio_m + ".wav",0.9f,5.0f,5.0f,[U]me[/U],"a.cabfront")); ну и делать Sleep(Math.Rand(10,22)); Sleep(Math.Rand(25,98)); совсем не обязательно Лучше просто Sleep(Math.Rand(35,130)); Да, не забудь её ( Radio_UKV(); ) в ф-цию Init дописать |
Вот блин проблема эти скобки....чють всторону и ошибка готова.....
|
[B]Диспетчер[/B], есть такое.
[B]TRam_[/B], ну и a.cabfront на a.bog0 заменить бы хорошо. |
Error: krasn_strela.gs(457) : parse error, line 457.......да уже 5я попытка прошла даром.....запутался я в этих скобках.....прошу помощи
|
Текущее время: 13:19. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim