###################################################### # NAME: PURE FEEL - Custom FFB by Hugo Vai # Volume --------------------------------------------- (raw_volume (blend volume 0.0 2.0)) # Spindle Scales ------------------------------------- (Fx_scale 1.0) (Fy_scale (* tone 1.0)) (Fz_scale 1.0) (Mx_scale 1.0) (My_scale 1.0) (Mz_scale (* (+ (* tone -1.0) 1.0) 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.00 -1.00)) (right_scale (linkage 1.00 -1.00)) # Rack ----------------------------------------------- (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))) (output (+ (* Fx_scale Fx) (* Fy_scale Fy) (* Fz_scale Fz) (* Mx_scale Mx) (* My_scale My) (* Mz_scale Mz) ) ) # 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.0)) (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.0)) (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 1.8 0.0)) (FL_scrub (scoop FL_scrub 0.0 0.0)) (FL_scrub (* FL_scrub (oscillator 0.0))) (FR_scrub (soft_clip FR_scrub 1.8 0.0)) (FR_scrub (scoop FR_scrub 0.0 0.0)) (FR_scrub (* FR_scrub (oscillator 0.0))) (RL_scrub (soft_clip RL_scrub 1.8 0.0)) (RL_scrub (scoop RL_scrub 0.0 0.0)) (RL_scrub (hard_clip RL_scrub 0.0)) (RL_scrub (* RL_scrub (oscillator (+ 0.0 (hard_clip (* rear_rotation 0.3) 0.3))) 1.0)) (RR_scrub (soft_clip RR_scrub 1.8 0.0)) (RR_scrub (scoop RR_scrub 0.0 0.0)) (RR_scrub (hard_clip RR_scrub 0.0)) (RR_scrub (* RR_scrub (oscillator (+ 0.0 (hard_clip (* rear_rotation 0.3) 0.3))) 1.0)) (scrub (soft_clip (+ FL_scrub FR_scrub RL_scrub RR_scrub) 0.0 0.0)) (scrub (* scrub (+ (* car_moving 0.2) 0.2))) # Texture -------------------------------------------- (road_scale (* 0.0001 1.0)) (brk_scale 0.0002) (bump_scale (* 0.24 1.0)) (scrub_scale (* 16.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 0.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 0.0)) (tex (+ FL_tex FR_tex)) (tex (soft_clip tex 0.0 0.0)) # SoP - Rear tyre forces ----------------------------- (sop_scale 0.18) (sop_lat_scale 0.0) (sop_diff_scale 0.55) (sop_lat (* (+ RL_lat RR_lat) sop_lat_scale)) (sop_diff (* (- RL_load RR_load) sop_diff_scale)) (sop_diff (smooth sop_diff 0.0)) (sop_out (* (+ sop_lat sop_diff) sop_scale)) (output (+ output sop_out)) #(output (compressor output threshold ratio attack release)) (output (compressor output (* 0.0) (* 0.0) (* 0.00) (* 0.00))) #Scoop as pCARS 1 - Scoop Knee / Scoop Reduction# (output (scoop output 7.5 0.3)) (output (* 4.5 volume output)) # Engine --------------------------------------------- (engine_vibration 0.0001) (engine_vibration_while_driving 0.0001) (cvwd (- 100 (* engine_vibration_while_driving (/ 100 engine_vibration)))) (engine (oscillator (* (* crankshaft 0.015) 0.2152))) (engine (* (- 1.0 (* (crossover vel_mag 0.4 1.0) (* cvwd 0.01))) engine)) (engine (* (* engine_vibration 0.002) engine)) (output (+ output engine)) # Gearbox -------------------------------------------- (gearbox (oscillator (* (abs (- driveshaft_core clutchshaft_core)) 1.0))) (gearbox (* gearbox gearbox_grind clutch 0.05)) (gearbox (spring gearbox 40000.0 0.6 1.0)) (gearbox (* gearbox 0.15)) (feel (+ tex gearbox)) (feel (spring feel device_filter_stiffness 0.5 1.5)) (output (+ output (* feel fx))) # Lock Stops ----------------------------------------- (stops (bumpstop output 0.05 2.0 0.05 0.0)) (output (+ output (* stops device_lock_stop))) #Deadzone Removal as pCARS 1 - deadzone/fall off (output (tighten output 0.00 0.00)) (output (relative output 1.3 0.1 0.95)) (histogram output) (output (hard_clip (* output gain) 1.0))