local audioutil = require "audioutil" local soundeffectsutil = require "soundeffectsutil" function data() return { tracks = { { name = "vehicle/icn/stand_idle.wav", refDist = 25.0 }, { name = "vehicle/icn/start.wav", refDist = 25.0 }, { name = "vehicle/icn/gas.wav", refDist = 25.0 }, { name = "environment/_no-license_train-wheels-ringing-curve.wav", refDist = 25.0 }, { name = "vehicle/train_electric_modern/_brakes.wav", refDist = 25.0 } }, events = { clacks = { names = { "vehicle/clack/modern/part_1.wav", "vehicle/clack/modern/part_2.wav", "vehicle/clack/modern/part_3.wav", "vehicle/clack/modern/part_4.wav", "vehicle/clack/modern/part_5.wav", "vehicle/clack/modern/part_6.wav", "vehicle/clack/modern/part_7.wav", "vehicle/clack/modern/part_8.wav", "vehicle/clack/modern/part_9.wav", "vehicle/clack/modern/part_10.wav" }, refDist = 15.0 }, horn = { names = { "vehicle/icn/icn_horn.wav" }, refDist = 50.0 }, openDoors = { names = { "vehicle/icn/door_open.wav" }, refDist = 5.0 }, closeDoors = { names = { "vehicle/icn/door_close.wav" }, refDist = 5.0 } }, updateFn = function (input) local axleRefWeight = 15.9 return { tracks = { { gain = soundeffectsutil.sampleCurve({ { 0, 1. }, { 0.7, 0.5 }, { 1.0, 0.5 } }, input.speed01), pitch = soundeffectsutil.sampleCurve({ { 0.0, 1.0 }, { 1, 1.0 } }, input.speed01) }, { gain = soundeffectsutil.sampleCurve({ { 0, .0 }, { .01, 0.08}, { .05, 0.2 }, { .15, 0.2 }, { .3, 0.0 } }, input.speed01), pitch = soundeffectsutil.sampleCurve({ { 0.0, 0.7 },{ 0.07, 1 }, { 1.00, 1.0 } }, input.speed01) }, { gain = soundeffectsutil.sampleCurve({ { .0, .0 }, { .15, 0.0 }, { .3, 0.2 },{ .5, 0.1 }, { 1.0, 0.05 } }, input.speed01), pitch = soundeffectsutil.sampleCurve({ { 0.0, 0.2 },{ 0.2, 0.5 }, { 1.00, 1.0 } }, input.speed01) }, { gain = soundeffectsutil.sampleCurve({ { .0, .0 }, { .30, .0 }, { .50, 0.2 }, { 1.0, 0.7 } }, input.speed01), pitch = soundeffectsutil.sampleCurve({ { .0, .0 }, { .32, 0.95 }, { 1.0, 1.3 } }, input.speed01) }, { gain = soundeffectsutil.sampleCurve({ { .0, .0 }, { .32, 0.1 }, { .52, 0.3 }, { .64, 0.2 }, { 1.0, 0.2 } }, input.speed01), pitch = 1.0 }, soundeffectsutil.squeal(input.speed, input.sideForce, input.maxSideForce), soundeffectsutil.brake(input.speed, input.brakeDecel, 0.5) }, events = { clacks = soundeffectsutil.clacks(input.speed, input.weight, input.numAxles, axleRefWeight, input.gameSpeedUp), horn = { gain = 1.0, pitch = 1.0 }, openDoors = { gain = 1.0, pitch = 1.0 }, closeDoors = { gain = 1.0, pitch = 1.0 } } } end } end