PDA

View Full Version : Thrustmaster T500 Wheel feels off



marcdxn
24-09-2017, 06:52
Struggling to get my t500 feeling right in pc2

I don’t feel solidly connected to the car like in pc1 and my other sim games it just feels off for some reason, I have a very sloppy feel in the middle area of the wheel, like the forces are only coming into play proper 20 degrees turn in either way but even then I don’t feel connected to the car like you would normally in a racing game with ffb wheel.

In the t500 profiler I have the strength set at 70
In the game I have set it to raw 100, 50, 50

Wheel turning degrees 900
Wheel calibrated in game too & pedals t3pa pro set

I’ve been trying all kinds of settings and jackspades new tweaker files for ffb but I’m struggling to find that sweet spot.

Can anyone using the t500 or t300 who has what they feel is a working setup share it with me.

Specs:
This is on latest windows 10 build
All drivers are the most current
Nvidia 1070
I5 4690k

At least then I can settle on the fact the game just feels different rather than it being something I’ve not done correctly

Thanks


(This is also posted at reddit ProjectCars but I’ve not had any replies so I’ve come here too)

wippy
24-09-2017, 08:55
I have exactly the same thing with my csl elite, it feels really floaty in the middle, some cars are great but others are shocking , its hard to keep them in a straight line down fast straights, its like the self centering is missing, in a real car this would probably be down to the toe setting , i may try to change it in game later but I have a feeling it wont make a difference

Siberian Tiger
24-09-2017, 08:58
The T500RS is a good Wheel, but for Raw it hasn't enough Torque... (IMHO)

Please try the Informative FFB.
Gain 100
Volume around 40 - Up it for more Weight
FX around 60

Rest Standard...

This give me a nice and detailed feeling.

Note: I don't like the Wheel to be heavy, so you may Need to Up Volume...

marcdxn
24-09-2017, 09:05
I'll try a bit more testing later today and report back. I've also been told to remove the T500 driver the latest that fixed issues with dirt 4 and dirt rally and reinstall them and see how that goes.

Ill pop back after some testing later

G17CH
24-09-2017, 09:26
T500:

65 / 70 / 95 / 0 / 20 / by game

Game:

Gain at 100


Rest are
Volume 34
Tone 56
FX 24
Spring 0

Just need to dial it in to suit personal preference.

Rossi46 (NL)
24-09-2017, 09:26
I am having exactly the same problems with my T300rs, wich is my fourth copy within 14 months.
Third and fourth copy is replaced 2-3 weeks ago.
My second copy of the T300rs had the same problems and i used it for 14 months , but this feeling was in all recent racing games. (Pcars1, AC, rFactor2)
Third copy had a ticking sound when pulling left to right so it is replaced
Fourth copy has the same issues as TS and has a light ticking sound like my third.

Diablo_rf
24-09-2017, 09:38
Struggling to get my t500 feeling right in pc2

I donít feel solidly connected to the car like in pc1 and my other sim games it just feels off for some reason, I have a very sloppy feel in the middle area of the wheel, like the forces are only coming into play proper 20 degrees turn in either way but even then I donít feel connected to the car like you would normally in a racing game with ffb wheel.

In the t500 profiler I have the strength set at 70
In the game I have set it to raw 100, 50, 50

Wheel turning degrees 900
Wheel calibrated in game too & pedals t3pa pro set

Iíve been trying all kinds of settings and jackspades new tweaker files for ffb but Iím struggling to find that sweet spot.

Can anyone using the t500 or t300 who has what they feel is a working setup share it with me.

Specs:
This is on latest windows 10 build
All drivers are the most current
Nvidia 1070
I5 4690k

At least then I can settle on the fact the game just feels different rather than it being something Iíve not done correctly

Thanks


(This is also posted at reddit ProjectCars but Iíve not had any replies so Iíve come here too)

I'm using this settings, feels better than the defaults.

# File by Niklas Silen
# INSTRUCTIONS (how to use the custom FFB system)
#################################################
# Copy this text to a plain text file. Remove the "" symbol that will appear at the begining and the end. Rename the file to ffb_custom.txt and place it in My Documents\Project CARS 2 directory, then select CUSTOM from within the game
#
#General form of code
#(A B ....)
#If A is known function name, then that function is done, with B ... as the arguments. If an argument is itself in (), then that is resolved first.
#If A is not a function name, it is taken as a variable name, and is assigned B, and ... is ignored.
#So
#(output (relative output 1.0 0.5 2.0))
#becomes in effect somthing like in C ish form:
#output = relative(output, 1.0, 0.5, 2.0);
#
# List of commands:
###################
#Variables ...
#Output ...
#* output -- the FFB applied to the wheel
#####
#Time ...
#* dt -- timestep
#* et -- elapsed time
#########
#Steering ...
#* steering_vel
#* steering_pos
################
#Player Controls ...
#* volume
#* tone
#* fx
#########
#Steering ...
#* steering_approx
#* steering_angle_FL
#* steering_angle_FR
#Useful for centering spring type effects.
############
#Rack Forces ...
#(FL, FR, RL, RR)
#* FL_Fx
#* FL_Fy
#* FL_Fz
#* FL_Mx
#* FL_My
#* FL_Mz
#These forces are the components of forces at the tires as felt through the rack. Simply add them all together to get the full rack force.
#Note that Mx and My are near zero, and do not contribute much at all, so adding Fx, Fy, Fz, and Mz is adequate.
#####################
#Full Forces at Tires ...
#(FL, FR, RL, RR)
#* FL_lat
#* FL_long
#* FL_load
#Unlike the above these are the raw full forces at the tires, not mechanically filtering through steering geometry and linkages.
######
#(FL, FR)
#FL_patch_fx
#FL_patch_fy
#FL_patch_fz
#FL_patch_mz
#These are direct forces from the contact patch of the tyre
######
#Grips ...
#(FL, FR)
#* FL_def
#* FL_adh
#* FL_tack
#* FL_stab
#* FL_visc
#* FL_tear
#The ratios of full grip (forces) due to each grip type in the model. They will all sum to 1.0 at any given timestep.
#######
#Rubber ...
#(FL, FR)
#* FL_slide -- 0 to 1 for how much the contact patch is in slide
#* FL_stretch
########
#Relates to Functions ...
#Linkage ...
#* arm_angle -- Linkage uses this value as the spindle arm angle
######
#Split ...
#* split_lo -- split's output: low component
#* split_md -- split's output: medium component
#* split_hi -- split's output: high component
#######
#Smooth ...
#* smooth_lo -- smoothed signal (same as return value)
#* smooth_hi -- the remainder (input - smoothed)
#########
#Histogram ...
#* hist_L -- histogram's L value; F1 widget uses this
#* hist_ML -- histogram's ML value; F1 widget uses this
#* hist_M -- histogram's M value; F1 widget uses this
#* hist_MH -- histogram's MH value; F1 widget uses this
#* hist_H -- histogram's H value; F1 widget uses this
#* hist_clip -- histogram's clip value; F1 widget uses this
###########
#SignalScale ...
#* scale_window_init -- first time time window before adjusting
#* scale_window_nominal -- subsequent windows
#* scale_soft_clear_t -- reference time for fading out learning info
#* scale_blend_t -- reference time for blending in new scale
#* scale_min -- minimum scale
#* scale_max -- maximum scale
##################
#Function Reference ...
#
#Absolute Value ...
#(abs <input>)
#
#Add ...
#(+ <input> ...)
#Add all of the inputs.
#
#AntiDrag ...
#(anti_drag <input> <Cd> <Cf> <refvel>)
#* Cd -- anti drag coeefficent, function of wheel position velocity
#* Cf -- anti drag friction, constant resistence, tapered to zero via:
#* refvel -- wheel velocity below which to taper to zero.
#
#Drag ...
#(drag <input> <Cd> <Cq>)
#* Cd -- drag coeefficent, function of wheel position velocity
#* Cq -- drag coeefficent, function of wheel position velocity squared
#
#Blend ...
#(blend <bias> <input for one> <input for zero>)
#
#Center ...
#(ctr <input>)
#Convert input assumed to be between from 0.0 to 1.0, to -1.0 to 1.0.
#
#Divide ...
#(/ <first input> <input> ...)
#Divide inputs from first input.
#
#Down ...
#(dn <input>)
#Convert input such that:
#* 0 - 0.5 : 0.0
#* 0.5 - 1.0 : 0.0 - 1.0
#
#Hard Clipper ...
#(hard_clip <input> <cap>)
#
#Histogram ...
#(histogram <input>)
#
#If ...
#(if <cond> <true> <false>)
#
#Linkage ...
#(linkage <mode> <angle>)
#
#Maximum ...
#(max <args ...>)
#
#Minimum ...
#(min <args ...>)
#
#Multiply ...
#(* <args ...>)
#
#Power ...
#(power <input> <power>)
#
#RelativeGain ...
#(relative <gain> <bleed> <clamp>)
#
#Safety ...
#(safety <input> <limit>)
#
#Scoop ...
#(scoop <input> <knee> <reduction>)
#
#SignalScale ...
#(signal_scale <input>
#<L weight> <ML weight> <M weight> <MH weight> <H weight>
#<clipping weight>
#<equalize blend> <boost blend>)
#
#Smooth ...
#(smooth <input> <ref time>)
#
#Soft Clipper ...
#(soft_clip <half in> <unity>)
#
#Split ...
#(split <lo scale> <md scale> <hi scale> <lo/md ref time> <md/hi ref time>)
#
#Spring ...
#(spring <force> <stiffness> <damping>)
#
#Subtract ...
#(- <first input> <input> ... )
#Subtract inputs from first input.
#
#Tighten Center ...
#(tighten <input> <range> <falloff>)
#
#Up ...
#(up <input>)
#Convert input such that:
#* 0 - 0.5 : 1.0 - 0.0
#* 0.5 - 1.0 : 0.0
######################################################
# END OF INSTRUCTIONS
######################################################
#
# CUSTOM PRESET Description: 50 / 50 split of Rack and Tire forces
#

(Fx_scale 1.0)
(Fy_scale 1.0)
(Fz_scale 1.0)
(My_scale 1.0)
(Mx_scale 1.0)
(Mz_scale 1.0)

# Low Speed Filter Out -------------------------------
(Fx_scale (* Fx_scale (crossover vel_mag 0.0 1.0)))
(Mz_scale (* Mz_scale (crossover vel_mag 0.0 1.0)))

(arm_angle 0.0)
(left_scale (linkage 1.0 -1.0))
(right_scale (linkage 1.0 1.0))

# TIRES
(def_scale 1.0)
(adh_scale 1.0)
(tack_scale 1.0)
(stab_scale 1.0)
(visc_scale 1.0)
(tear_scale 1.0)
(left_grip (+ (* FL_def def_scale) (* FL_adh adh_scale) (* FL_tack tack_scale) (* FL_stab stab_scale) (* FL_visc visc_scale) (* FL_tear tear_scale)))
(right_grip (+ (* FR_def def_scale) (* FR_adh adh_scale) (* FR_tack tack_scale) (* FR_stab stab_scale) (* FR_visc visc_scale) (* FR_tear tear_scale)))

(left_scale (* left_scale left_grip))
(right_scale (* right_scale right_grip))

# Tires linkage through 0 arm angle
(Fx (+ (* left_scale FL_Fx) (* right_scale FR_Fx)))
(Fy (+ (* left_scale FL_Fy) (* right_scale FR_Fy)))
(Fz (+ (* left_scale FL_Fz) (* right_scale FR_Fz)))
(Mx (+ (* left_scale FL_Mx) (* right_scale FR_Mx)))
(My (+ (* left_scale FL_My) (* right_scale FR_My)))
(Mz (+ (* left_scale FL_Mz) (* right_scale FR_Mz)))
(tire_grips (+ (* Fx_scale Fx) (* Fy_scale Fy) (* Fz_scale Fz) (* Mx_scale Mx) (* My_scale My) (* Mz_scale Mz) ) )

# RACK part starts from here

(Fx_scale 1.0)
(Fy_scale 1.0)
(Fz_scale 1.0)
(My_scale 1.0)
(Mx_scale 1.0)
(Mz_scale 1.0)

# Low Speed Filter Out
(Fx_scale (* Fx_scale (crossover vel_mag 0.0 1.0)))
(Mz_scale (* Mz_scale (crossover vel_mag 0.0 1.0)))

# Spindle Arm
(arm_angle 15.0))
(left_scale (linkage 1.0 -1.0))
(right_scale (linkage 1.0 1.0))

# Rack linkage
(Fx (+ (* left_scale FL_Fx) (* right_scale FR_Fx)))
(Fy (+ (* left_scale FL_Fy) (* right_scale FR_Fy)))
(Fz (+ (* left_scale FL_Fz) (* right_scale FR_Fz)))
(Mx (+ (* left_scale FL_Mx) (* right_scale FR_Mx)))
(My (+ (* left_scale FL_My) (* right_scale FR_My)))
(Mz (+ (* left_scale FL_Mz) (* right_scale FR_Mz)))
(rack (+ (* Fx_scale Fx) (* Fy_scale Fy) (* Fz_scale Fz) (* Mx_scale Mx) (* My_scale My) (* Mz_scale Mz) ) )

# Combining RACK and TIRE forces

(output (+ (* tone 2.0 rack) (* (+ (* tone -1.0) 1.0) 2.0 tire_grips)))

# Jerk Based Road Feel -------------------------------
(FL_road (* FL_load 1.0))
(FL_road (jerk FL_road))
(FL_road (* FL_road (abs FL_angvel)))

(FR_road (* FR_load -1.0))
(FR_road (jerk FR_road))
(FR_road (* FR_road (abs FR_angvel)))

(FL_brk (* FL_long 1.0))
(FL_brk (jerk FL_brk))
(FL_brk (* FL_brk (abs FL_angvel)))

(FR_brk (* FR_long -1.0))
(FR_brk (jerk FR_brk))
(FR_brk (* FR_brk (abs FR_angvel)))

# Bump -----------------------------------------------
(inv_period (/ 1.0 (+ FL_bump_period 0.001)))
(dphase (* FL_vel_x dt inv_period))
(FL_bump (oscillator dphase))
(FL_bump (scoop FL_bump FL_bump_sharpness 0.95))
(FL_bump (* FL_bump FL_load FL_bump_amplitude FL_angvel))
(FL_bump (split FL_bump 0.0 1.0 0.0 0.4 0.02))

(inv_period (/ 1.0 (+ FR_bump_period 0.001)))
(dphase (* FR_vel_x dt inv_period))
(FR_bump (oscillator dphase))
(FR_bump (scoop FR_bump FR_bump_sharpness 0.95))
(FR_bump (* FR_bump FR_load FR_bump_amplitude FR_angvel))
(FR_bump (split FR_bump 0.0 1.0 0.0 0.4 0.02))

# Scrub ----------------------------------------------
(FL_scrub (soft_clip FL_scrub 2.0 0.0))
(FL_scrub (scoop FL_scrub 0.8 0.999))
(FL_scrub (* FL_scrub (oscillator 1.2)))
(FR_scrub (soft_clip FR_scrub 2.0 0.0))
(FR_scrub (scoop FR_scrub 0.8 0.999))
(FR_scrub (* FR_scrub (oscillator 1.2)))

# Texture --------------------------------------------
(road_scale (* 0.0005 1.0))
(brk_scale 0.0)
(bump_scale (* 0.24 1.0))
(scrub_scale (* 14.0 1.0))
(tex_k 20000.0)
(tex_d 1.0)

(FL_tex (+ (* road_scale FL_road) (* brk_scale FL_brk) (* bump_scale FL_bump) (* scrub_scale FL_scrub)))
(FL_tex (split FL_tex 0.0 1.0 1.0 2.0 0.01))
(FL_tex (spring FL_tex tex_k tex_d 1.0))

(FR_tex (+ (* road_scale FR_road) (* brk_scale FR_brk) (* bump_scale FR_bump) (* scrub_scale FR_scrub)))
(FR_tex (split FR_tex 0.0 1.0 1.0 2.0 0.01))
(FR_tex (spring FR_tex tex_k tex_d 1.0))

(tex (+ FL_tex FR_tex))
(tex (soft_clip tex 1.0 0.0))

# Engine ---------------------------------------------
(engine (oscillator (* throttle crankshaft 0.0006)))
(engine (split engine 0.0 1.0 0.0 0.1 0.02))

# Gearbox --------------------------------------------
(gearbox (oscillator (* (- driveshaft_core clutchshaft_core) 1.0)))
(gearbox (* gearbox gearbox_grind clutch 0.05))
(gearbox (spring gearbox 8000.0 0.2 1.0))
(gearbox (* gearbox 1.0))

(feel (+ tex gearbox))

# Scaler as informational only, doesnt affect output -
(scale_window_init 10.0)
(scale_window_nominal 2.0)
(scale_soft_clear_t 10.0)
(scale_min 0.2)
(scale_max 2.0)
(scale_blend_t 2.0)
(signal_scale output
1.0 1.0 1.0 1.0 1.0
0.0
0.0 0.0)

(output (+ (* volume output) (* feel fx)))

(histogram output)

(output (hard_clip (* output gain) 1.0))

marcdxn
25-09-2017, 11:16
Thank you

I've got a much better feeling now, it's still a bit off at times odd instant clunks I'll keep working at if I've managed to get a time trial time set I'm fairly happy with and I can be within 200ths of a second of it over 5 laps so consistency is coming back with the Gt3 class with the mentioned settings but the wheel does behave odly while doing these laps from time to time.

Weird clunks randomly mid corner, I can't explain in text I guess its just different but I'll tweak and tweak some more until I'm there with it.




I'm using this settings, feels better than the defaults.

# File by Niklas Silen
# INSTRUCTIONS (how to use the custom FFB system)
#################################################
# Copy this text to a plain text file. Remove the "" symbol that will appear at the begining and the end. Rename the file to ffb_custom.txt and place it in My Documents\Project CARS 2 directory, then select CUSTOM from within the game
#
#General form of code
#(A B ....)
#If A is known function name, then that function is done, with B ... as the arguments. If an argument is itself in (), then that is resolved first.
#If A is not a function name, it is taken as a variable name, and is assigned B, and ... is ignored.
#So
#(output (relative output 1.0 0.5 2.0))
#becomes in effect somthing like in C ish form:
#output = relative(output, 1.0, 0.5, 2.0);
#
# List of commands:
###################
#Variables ...
#Output ...
#* output -- the FFB applied to the wheel
#####
#Time ...
#* dt -- timestep
#* et -- elapsed time
#########
#Steering ...
#* steering_vel
#* steering_pos
################
#Player Controls ...
#* volume
#* tone
#* fx
#########
#Steering ...
#* steering_approx
#* steering_angle_FL
#* steering_angle_FR
#Useful for centering spring type effects.
############
#Rack Forces ...
#(FL, FR, RL, RR)
#* FL_Fx
#* FL_Fy
#* FL_Fz
#* FL_Mx
#* FL_My
#* FL_Mz
#These forces are the components of forces at the tires as felt through the rack. Simply add them all together to get the full rack force.
#Note that Mx and My are near zero, and do not contribute much at all, so adding Fx, Fy, Fz, and Mz is adequate.
#####################
#Full Forces at Tires ...
#(FL, FR, RL, RR)
#* FL_lat
#* FL_long
#* FL_load
#Unlike the above these are the raw full forces at the tires, not mechanically filtering through steering geometry and linkages.
######
#(FL, FR)
#FL_patch_fx
#FL_patch_fy
#FL_patch_fz
#FL_patch_mz
#These are direct forces from the contact patch of the tyre
######
#Grips ...
#(FL, FR)
#* FL_def
#* FL_adh
#* FL_tack
#* FL_stab
#* FL_visc
#* FL_tear
#The ratios of full grip (forces) due to each grip type in the model. They will all sum to 1.0 at any given timestep.
#######
#Rubber ...
#(FL, FR)
#* FL_slide -- 0 to 1 for how much the contact patch is in slide
#* FL_stretch
########
#Relates to Functions ...
#Linkage ...
#* arm_angle -- Linkage uses this value as the spindle arm angle
######
#Split ...
#* split_lo -- split's output: low component
#* split_md -- split's output: medium component
#* split_hi -- split's output: high component
#######
#Smooth ...
#* smooth_lo -- smoothed signal (same as return value)
#* smooth_hi -- the remainder (input - smoothed)
#########
#Histogram ...
#* hist_L -- histogram's L value; F1 widget uses this
#* hist_ML -- histogram's ML value; F1 widget uses this
#* hist_M -- histogram's M value; F1 widget uses this
#* hist_MH -- histogram's MH value; F1 widget uses this
#* hist_H -- histogram's H value; F1 widget uses this
#* hist_clip -- histogram's clip value; F1 widget uses this
###########
#SignalScale ...
#* scale_window_init -- first time time window before adjusting
#* scale_window_nominal -- subsequent windows
#* scale_soft_clear_t -- reference time for fading out learning info
#* scale_blend_t -- reference time for blending in new scale
#* scale_min -- minimum scale
#* scale_max -- maximum scale
##################
#Function Reference ...
#
#Absolute Value ...
#(abs <input>)
#
#Add ...
#(+ <input> ...)
#Add all of the inputs.
#
#AntiDrag ...
#(anti_drag <input> <Cd> <Cf> <refvel>)
#* Cd -- anti drag coeefficent, function of wheel position velocity
#* Cf -- anti drag friction, constant resistence, tapered to zero via:
#* refvel -- wheel velocity below which to taper to zero.
#
#Drag ...
#(drag <input> <Cd> <Cq>)
#* Cd -- drag coeefficent, function of wheel position velocity
#* Cq -- drag coeefficent, function of wheel position velocity squared
#
#Blend ...
#(blend <bias> <input for one> <input for zero>)
#
#Center ...
#(ctr <input>)
#Convert input assumed to be between from 0.0 to 1.0, to -1.0 to 1.0.
#
#Divide ...
#(/ <first input> <input> ...)
#Divide inputs from first input.
#
#Down ...
#(dn <input>)
#Convert input such that:
#* 0 - 0.5 : 0.0
#* 0.5 - 1.0 : 0.0 - 1.0
#
#Hard Clipper ...
#(hard_clip <input> <cap>)
#
#Histogram ...
#(histogram <input>)
#
#If ...
#(if <cond> <true> <false>)
#
#Linkage ...
#(linkage <mode> <angle>)
#
#Maximum ...
#(max <args ...>)
#
#Minimum ...
#(min <args ...>)
#
#Multiply ...
#(* <args ...>)
#
#Power ...
#(power <input> <power>)
#
#RelativeGain ...
#(relative <gain> <bleed> <clamp>)
#
#Safety ...
#(safety <input> <limit>)
#
#Scoop ...
#(scoop <input> <knee> <reduction>)
#
#SignalScale ...
#(signal_scale <input>
#<L weight> <ML weight> <M weight> <MH weight> <H weight>
#<clipping weight>
#<equalize blend> <boost blend>)
#
#Smooth ...
#(smooth <input> <ref time>)
#
#Soft Clipper ...
#(soft_clip <half in> <unity>)
#
#Split ...
#(split <lo scale> <md scale> <hi scale> <lo/md ref time> <md/hi ref time>)
#
#Spring ...
#(spring <force> <stiffness> <damping>)
#
#Subtract ...
#(- <first input> <input> ... )
#Subtract inputs from first input.
#
#Tighten Center ...
#(tighten <input> <range> <falloff>)
#
#Up ...
#(up <input>)
#Convert input such that:
#* 0 - 0.5 : 1.0 - 0.0
#* 0.5 - 1.0 : 0.0
######################################################
# END OF INSTRUCTIONS
######################################################
#
# CUSTOM PRESET Description: 50 / 50 split of Rack and Tire forces
#

(Fx_scale 1.0)
(Fy_scale 1.0)
(Fz_scale 1.0)
(My_scale 1.0)
(Mx_scale 1.0)
(Mz_scale 1.0)

# Low Speed Filter Out -------------------------------
(Fx_scale (* Fx_scale (crossover vel_mag 0.0 1.0)))
(Mz_scale (* Mz_scale (crossover vel_mag 0.0 1.0)))

(arm_angle 0.0)
(left_scale (linkage 1.0 -1.0))
(right_scale (linkage 1.0 1.0))

# TIRES
(def_scale 1.0)
(adh_scale 1.0)
(tack_scale 1.0)
(stab_scale 1.0)
(visc_scale 1.0)
(tear_scale 1.0)
(left_grip (+ (* FL_def def_scale) (* FL_adh adh_scale) (* FL_tack tack_scale) (* FL_stab stab_scale) (* FL_visc visc_scale) (* FL_tear tear_scale)))
(right_grip (+ (* FR_def def_scale) (* FR_adh adh_scale) (* FR_tack tack_scale) (* FR_stab stab_scale) (* FR_visc visc_scale) (* FR_tear tear_scale)))

(left_scale (* left_scale left_grip))
(right_scale (* right_scale right_grip))

# Tires linkage through 0 arm angle
(Fx (+ (* left_scale FL_Fx) (* right_scale FR_Fx)))
(Fy (+ (* left_scale FL_Fy) (* right_scale FR_Fy)))
(Fz (+ (* left_scale FL_Fz) (* right_scale FR_Fz)))
(Mx (+ (* left_scale FL_Mx) (* right_scale FR_Mx)))
(My (+ (* left_scale FL_My) (* right_scale FR_My)))
(Mz (+ (* left_scale FL_Mz) (* right_scale FR_Mz)))
(tire_grips (+ (* Fx_scale Fx) (* Fy_scale Fy) (* Fz_scale Fz) (* Mx_scale Mx) (* My_scale My) (* Mz_scale Mz) ) )

# RACK part starts from here

(Fx_scale 1.0)
(Fy_scale 1.0)
(Fz_scale 1.0)
(My_scale 1.0)
(Mx_scale 1.0)
(Mz_scale 1.0)

# Low Speed Filter Out
(Fx_scale (* Fx_scale (crossover vel_mag 0.0 1.0)))
(Mz_scale (* Mz_scale (crossover vel_mag 0.0 1.0)))

# Spindle Arm
(arm_angle 15.0))
(left_scale (linkage 1.0 -1.0))
(right_scale (linkage 1.0 1.0))

# Rack linkage
(Fx (+ (* left_scale FL_Fx) (* right_scale FR_Fx)))
(Fy (+ (* left_scale FL_Fy) (* right_scale FR_Fy)))
(Fz (+ (* left_scale FL_Fz) (* right_scale FR_Fz)))
(Mx (+ (* left_scale FL_Mx) (* right_scale FR_Mx)))
(My (+ (* left_scale FL_My) (* right_scale FR_My)))
(Mz (+ (* left_scale FL_Mz) (* right_scale FR_Mz)))
(rack (+ (* Fx_scale Fx) (* Fy_scale Fy) (* Fz_scale Fz) (* Mx_scale Mx) (* My_scale My) (* Mz_scale Mz) ) )

# Combining RACK and TIRE forces

(output (+ (* tone 2.0 rack) (* (+ (* tone -1.0) 1.0) 2.0 tire_grips)))

# Jerk Based Road Feel -------------------------------
(FL_road (* FL_load 1.0))
(FL_road (jerk FL_road))
(FL_road (* FL_road (abs FL_angvel)))

(FR_road (* FR_load -1.0))
(FR_road (jerk FR_road))
(FR_road (* FR_road (abs FR_angvel)))

(FL_brk (* FL_long 1.0))
(FL_brk (jerk FL_brk))
(FL_brk (* FL_brk (abs FL_angvel)))

(FR_brk (* FR_long -1.0))
(FR_brk (jerk FR_brk))
(FR_brk (* FR_brk (abs FR_angvel)))

# Bump -----------------------------------------------
(inv_period (/ 1.0 (+ FL_bump_period 0.001)))
(dphase (* FL_vel_x dt inv_period))
(FL_bump (oscillator dphase))
(FL_bump (scoop FL_bump FL_bump_sharpness 0.95))
(FL_bump (* FL_bump FL_load FL_bump_amplitude FL_angvel))
(FL_bump (split FL_bump 0.0 1.0 0.0 0.4 0.02))

(inv_period (/ 1.0 (+ FR_bump_period 0.001)))
(dphase (* FR_vel_x dt inv_period))
(FR_bump (oscillator dphase))
(FR_bump (scoop FR_bump FR_bump_sharpness 0.95))
(FR_bump (* FR_bump FR_load FR_bump_amplitude FR_angvel))
(FR_bump (split FR_bump 0.0 1.0 0.0 0.4 0.02))

# Scrub ----------------------------------------------
(FL_scrub (soft_clip FL_scrub 2.0 0.0))
(FL_scrub (scoop FL_scrub 0.8 0.999))
(FL_scrub (* FL_scrub (oscillator 1.2)))
(FR_scrub (soft_clip FR_scrub 2.0 0.0))
(FR_scrub (scoop FR_scrub 0.8 0.999))
(FR_scrub (* FR_scrub (oscillator 1.2)))

# Texture --------------------------------------------
(road_scale (* 0.0005 1.0))
(brk_scale 0.0)
(bump_scale (* 0.24 1.0))
(scrub_scale (* 14.0 1.0))
(tex_k 20000.0)
(tex_d 1.0)

(FL_tex (+ (* road_scale FL_road) (* brk_scale FL_brk) (* bump_scale FL_bump) (* scrub_scale FL_scrub)))
(FL_tex (split FL_tex 0.0 1.0 1.0 2.0 0.01))
(FL_tex (spring FL_tex tex_k tex_d 1.0))

(FR_tex (+ (* road_scale FR_road) (* brk_scale FR_brk) (* bump_scale FR_bump) (* scrub_scale FR_scrub)))
(FR_tex (split FR_tex 0.0 1.0 1.0 2.0 0.01))
(FR_tex (spring FR_tex tex_k tex_d 1.0))

(tex (+ FL_tex FR_tex))
(tex (soft_clip tex 1.0 0.0))

# Engine ---------------------------------------------
(engine (oscillator (* throttle crankshaft 0.0006)))
(engine (split engine 0.0 1.0 0.0 0.1 0.02))

# Gearbox --------------------------------------------
(gearbox (oscillator (* (- driveshaft_core clutchshaft_core) 1.0)))
(gearbox (* gearbox gearbox_grind clutch 0.05))
(gearbox (spring gearbox 8000.0 0.2 1.0))
(gearbox (* gearbox 1.0))

(feel (+ tex gearbox))

# Scaler as informational only, doesnt affect output -
(scale_window_init 10.0)
(scale_window_nominal 2.0)
(scale_soft_clear_t 10.0)
(scale_min 0.2)
(scale_max 2.0)
(scale_blend_t 2.0)
(signal_scale output
1.0 1.0 1.0 1.0 1.0
0.0
0.0 0.0)

(output (+ (* volume output) (* feel fx)))

(histogram output)

(output (hard_clip (* output gain) 1.0))