local soundeffectsutil = require "soundeffectsutil" function data() return { tracks = { { name = "vehicle/train/comeng/idle.wav", gain = 1.0, refDist = 25.0, rolloffFact = 1.0, hasVelocity = true}, { name = "vehicle/train/comeng/move.wav", gain = 1.0, refDist = 25.0, rolloffFact = 1.0, hasVelocity = true}, { name = "vehicle/train_electric_modern/_wheels_ringing.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 }, openDoors = { names = { "vehicle/train/comeng/dooropen.wav" }, refDist = 5.0 }, closeDoors = { names = { "vehicle/train/comeng/doorclose.wav" }, refDist = 5.0 } }, updateFn = function (input) local axleRefWeight = 1.0 return { tracks = { { gain = soundeffectsutil.sampleCurve({ { 0.0, 0.5 }, { 1.03, 0.78 }, { 1.04, 0.0 }}, input.power01), pitch = soundeffectsutil.sampleCurve({ { .0, 1.0 }, { 1.0, 1.0 } }, input.power01), }, { gain = soundeffectsutil.sampleCurve({ { 0.2, .0 }, { 0.2, .0 }, { 0.2, .0 }, { 0.2, .6 }, { 0.2, .6 } }, input.speed01), pitch = soundeffectsutil.sampleCurve({ { .0, 0.0 }, { .16, .16 }, { .32, .54 }, { .64, .91 }, { 1.0, 1.0 } }, input.speed01) }, soundeffectsutil.squeal(input.speed, input.sideForce, input.maxSideForce), soundeffectsutil.brake(input.speed, input.brakeDecel, 1.0) }, events = { clacks = soundeffectsutil.clacks(input.speed, input.weight, input.numAxles, axleRefWeight, input.gameSpeedUp), openDoors = { gain = 8.0, pitch = 1.0}, closeDoors = { gain = 8.0, pitch = 1.0} } } end } end