When you are far away from the locomotive or pull the angle of view far away, and then move the angle of view close to the locomotive, its sound effect will be gone.The sound effect will only work again if you move away from the locomotive (pull away the camera) and then close to the locomotive.(when it's a train with my self-made wagon, it won't happen when it's a train with the default wagon.)
Here are all script content:
DF4B:
local soundsetutil = require "soundsetutil"
local clackNames = {
"vehicle/clack/CN_Locomotive/part_1.wav",
"vehicle/clack/CN_Locomotive/part_2.wav",
"vehicle/clack/CN_Locomotive/part_3.wav",
"vehicle/clack/CN_Locomotive/part_4.wav",
"vehicle/clack/CN_Locomotive/part_5.wav",
"vehicle/clack/CN_Locomotive/part_6.wav",
"vehicle/clack/CN_Locomotive/part_7.wav",
"vehicle/clack/CN_Locomotive/part_8.wav",
"vehicle/clack/CN_Locomotive/part_9.wav",
"vehicle/clack/CN_Locomotive/part_10.wav"
}
function data()
local data = soundsetutil.makeSoundSet()
soundsetutil.addTrackParamCR(data, "vehicle/DF4B/x_DF4_Power0.wav", 30.0,
{ { 0.0,1.0 }, { .01, 1.0 }, { .05, 0.0 } }, { { .0, 1.0 }, { 1.0, 1.0 } }, { { .0, 0.0 }, { 0.12, 0.13 }, { 0.24, 0.29 }, { 0.36, 0.45 }, { 0.48, 0.61 } , { 0.6, 0.77 }, { 0.72, 1.0 }}, "power01", "speed01")
soundsetutil.addTrackParamCR(data, "vehicle/DF4B/x_DF4_Power1.wav", 30.0,
{ { 0.01,0.0 }, { .05, 1.0 }, { .21, 1.0 } , { .25, 0.0 } }, { { .0, 1.0 }, { 1.0, 1.0 } }, { { .0, 0.0 }, { 0.12, 0.13 }, { 0.24, 0.29 }, { 0.36, 0.45 }, { 0.48, 0.61 } , { 0.6, 0.77 }, { 0.72, 1.0 } }, "power01", "speed01")
soundsetutil.addTrackParamCR(data, "vehicle/DF4B/x_DF4_Power2.wav", 30.0,
{ { 0.17,0.0 }, { .21, 1.0 }, { 0.37, 1.0 }, { 0.41, 0.0 } }, { { .0, 1.0 }, { 1.0, 1.0 } }, {{ .0, 0.0 }, { 0.12, 0.13 }, { 0.24, 0.29 }, { 0.36, 0.45 }, { 0.48, 0.61 } , { 0.6, 0.77 }, { 0.72, 1.0 }},"power01", "speed01")
soundsetutil.addTrackParamCR(data, "vehicle/DF4B/x_DF4_Power3.wav", 30.0,
{ { 0.33,0.0 }, { .37, 1.0 }, { 0.53, 1.0 }, { 0.57, 0.0 } }, { { .0, 1.0 }, { 1.0, 1.0 } }, {{ .0, 0.0 }, { 0.12, 0.13 }, { 0.24, 0.29 }, { 0.36, 0.45 }, { 0.48, 0.61 } , { 0.6, 0.77 }, { 0.72, 1.0 } },"power01", "speed01")
soundsetutil.addTrackParamCR(data, "vehicle/DF4B/x_DF4_Power4.wav", 30.0,
{ { 0.49,0.0 }, { .50, 1.0 }, { 0.66, 1.0 }, { 0.70, 0.0 } }, { { .0, 1.0 }, { 1.0, 1.0 } }, {{ .0, 0.0 }, { 0.12, 0.13 }, { 0.24, 0.29 }, { 0.36, 0.45 }, { 0.48, 0.61 } , { 0.6, 0.77 }, { 0.72, 1.0 } },"power01", "speed01")
soundsetutil.addTrackParamCR(data, "vehicle/DF4B/x_DF4_Power5.wav", 30.0,
{ { 0.49,0.0 }, { .58, 1.0 }, { 0.74, 1.0 }, { 0.78, 0.0 } }, { { .0, 1.0 }, { 1.0, 1.0 } }, {{ .0, 0.0 }, { 0.16, 0.19 }, { 0.27, 0.32 }, { 0.39, 0.48 }, { 0.48, 0.61 } , { 0.63, 0.8 }, { 0.72, 1.0 } },"power01", "speed01")
soundsetutil.addTrackParamCR(data, "vehicle/DF4B/x_DF4_Power6.wav", 30.0,
{ { 0.65,0.0 }, { .69, 1.0 }, { 0.85, 1.0 }, }, { { .0, 1.0 }, { 1.0, 1.0 } }, {{ .0, 0.0 }, { 0.12, 0.13 }, { 0.24, 0.29 }, { 0.36, 0.45 }, { 0.48, 0.61 } , { 0.6, 0.77 }, { 0.72, 1.0 } },"power01", "speed01")
soundsetutil.addEventClacks(data, clackNames, 25.0, 183.0)
soundsetutil.addEvent(data, "horn", { "vehicle/DF4B/x_DF4_Horn.wav" }, 30.0)
soundsetutil.addTrackSqueal(data, "vehicle/Kurve/kurve_freight2.wav", 25.0)
soundsetutil.addTrackBrake(data, "vehicle/brake/x_CNPC_Brake_Squeal.wav", 25.0, .99)
return data
end
----------------------------------------------------------------------------------------------------
KD25G:
local soundeffectsutil = require "soundeffectsutil"
function data()
return {
tracks = {
{ name = "vehicle/CH_KD25G/x_KD.wav", refDist = 5.0 }, --KD
{ name = "vehicle/waggon_modern/_waggon_modern.wav", refDist = 5.0 },--ALL
{ name = "vehicle/speed_pc/start.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_10.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_17.30.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_20.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_23.00.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_35.43.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_40.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_49.20.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_63.33.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_80.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_100.wav", refDist = 5.0 },
{ name = "vehicle/speed_pc/x_CNPC_Rumble_120.wav", refDist = 5.0 },
{ name = "vehicle/train/wheels_ringing2.wav", refDist = 5.0 },
{ name = "vehicle/brake/x_CNPC_Brake_Disk.wav", refDist = 5.0 }
},
events = {
clacks = {
names = {
"vehicle/clack/CN_PC/clack_1.wav",
"vehicle/clack/CN_PC/clack_2.wav",
"vehicle/clack/CN_PC/clack_3.wav",
"vehicle/clack/CN_PC/clack_4.wav",
"vehicle/clack/CN_PC/clack_5.wav",
"vehicle/clack/CN_PC/clack_6.wav",
"vehicle/clack/CN_PC/clack_7.wav",
"vehicle/clack/CN_PC/clack_8.wav",
"vehicle/clack/CN_PC/clack_9.wav",
"vehicle/clack/CN_PC/clack_10.wav",
"vehicle/clack/CN_PC/clack_11.wav",
"vehicle/clack/CN_PC/clack_12.wav",
"vehicle/clack/CN_PC/clack_12.wav"
},
refDist = 25.0
}
},
updateFn = function (input)
local speed01 = input.speed / input.topSpeed
local refWeight = 60.0
local axleRefWeight = 14.0
return {
tracks = {
--KD
{
gain = soundeffectsutil.sampleCurve({ { .0, 1.0 }, { 1.0, 1.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({ { .0, 1.0 }, { 1.0, 1.0 } }, speed01)
},
--ALL
{
gain = soundeffectsutil.sampleCurve({ { .0, .0 }, { 1.0, 1.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({ { .0, 1.0 }, { 1.0, 1.0 } }, speed01)
},
--START
{
gain = soundeffectsutil.sampleCurve({{ 0.0, 0.0 },
{ 0.0, 0.0 },
{ 0.01, 1.0 },
{ 0.02, 0.0 },
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--10KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.09, 0.0 },
{ 0.0, 0.0 },
{ 0.02, 0.2 },
{ 0.05, 0.2 },
{ 0.06, 0.4 },
{ 0.08, 0.6 },
{ 0.08, 0.6 },
{ 0.10, 0.6 },
{ 0.14, 0.1 },--17.3KM/H
{ 0.15, 0.0 },
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--17.3KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.18, 0.0 },
{ 0.0, 0.0 },
{ 0.12, 0.1 },
{ 0.13, 0.2 },
{ 0.14, 0.6 },
{ 0.15, 0.6 },
{ 0.16, 0.1 },--20.0KM/H
{ 0.17, 0.0 },
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--20KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.27, 0.0 },
{ 0.0, 0.0 },
{ 0.15, 0.1 },
{ 0.16, 0.2 },
{ 0.17, 0.6 },
{ 0.18, 0.6 },
{ 0.19, 0.1 },--23.0KM/H
{ 0.20, 0.0 },
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--23KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.36, 0.0 },
{ 0.0, 0.0 },
{ 0.17, 0.1 },
{ 0.18, 0.2 },
{ 0.20, 0.6 },
{ 0.25, 0.6 },
{ 0.29, 0.1 },--35.0KM/H
{ 0.30, 0.0 },
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--35KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.45, 0.0 },
{ 0.0, 0.0 },
{ 0.27, 0.1 },
{ 0.28, 0.2 },
{ 0.29, 0.6 },
{ 0.31, 0.6 },
{ 0.33, 0.1 },--40.0KM/H
{ 0.34, 0.0 },
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--40KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.54, 0.0 },
{ 0.0, 0.0 },
{ 0.31, 0.1 },
{ 0.32, 0.2 },
{ 0.33, 0.6 },
{ 0.37, 0.6 },
{ 0.40, 0.1 },--49.0KM/H
{ 0.41, 0.0 },
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--49.0KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.63, 0.0 },
{ 0.0, 0.0 },
{ 0.38, 0.1 },
{ 0.39, 0.2 },
{ 0.40, 0.6 },
{ 0.49, 0.6 },
{ 0.52, 0.1 },--63.0KM/H
{ 0.53, 0.0 },
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--63.0KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.72, 0.0 },
{ 0.0, 0.0 },
{ 0.50, 0.1 },
{ 0.51, 0.2 },
{ 0.52, 0.6 },
{ 0.63, 0.6 },
{ 0.66, 0.1 },--80.0KM/H
{ 0.67, 0.0 },
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--80.0KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.81, 0.0 },
{ 0.0, 0.0 },
{ 0.64, 0.1 },
{ 0.65, 0.2 },
{ 0.66, 0.6 },
{ 0.80, 0.6 },
{ 0.83, 0.1 },--100.0KM/H
{ 0.84, 0.0 },
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--100.0KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.90, 0.0 },
{ 0.0, 0.0 },
{ 0.81, 0.1 },
{ 0.82, 0.2 },
{ 0.83, 0.6 },
{ 0.95, 0.6 },
{ 0.99, 0.0 },--120.0KM/H
{ 1.0, 0.0 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
--120.0KM/H
{
gain = soundeffectsutil.sampleCurve({{ 0.99, 0.0 },
{ 0.0, 0.0 },
{ 0.97, 0.1 },
{ 0.98, 0.2 },
{ 0.99, 0.6 },
{ 1.0, 0.6 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .0, 1.0 },
{ 1.0, 1.0 } }, speed01)
},
----------------
soundeffectsutil.squeal(input.speed, input.sideForce, input.maxSideForce),
soundeffectsutil.brake(input.speed, input.brakeDecel, 0.5),
{ --BRAKE
gain = soundeffectsutil.sampleCurve({{ .0, .0 },
{ 0.01, .3},
{ 0.04, .5 },
{ 0.08, .7 },
{ 1.0, .9 } }, speed01),
pitch = soundeffectsutil.sampleCurve({{ .9, 0.5 },
{ 1.0, 0.3 } }, speed01)
}--BRAKE
},
events = {
clacks = soundeffectsutil.clacks(input.speed, input.weight, input.numAxles, axleRefWeight, input.gameSpeedUp)
}
}
end
}
end
-----------------------------------
lua:
function soundsetutil.CRgain(CRa,CRb)
if (CRa > CRb) then return CRb end
return CRa
end
function soundsetutil.addTrackParamCR(data, name, refDist, gainCurve, pitchCurve,maxgainCurve,param01,param02)
soundsetutil.addTrack(data, name, refDist,
function (track, input)
track.gain = audioutil.sampleCurve(gainCurve, soundsetutil.CRgain( input[param01],audioutil.sampleCurve(maxgainCurve, input[param02])) )
track.pitch = audioutil.sampleCurve(pitchCurve, soundsetutil.CRgain( input[param01],audioutil.sampleCurve(maxgainCurve, input[param02])) )
end)
end
I've been researching for a week, but I don't have any clue...