What is it?
It is a small app that will show you your current FFB level and any clipping you may experience, and it will also suggest and set a gain to use in the game to minimize clipping and maximize forces generated from your force feedback device.
How do I use it?
Unpack the .RAR to Steamapps/Assetto Corsa/
Run Assetto Corsa and enable "FFBClip" in MAIN MENU -> OPTIONS -> GENERAL -> UI Modules
New features and how to make sense of it all:
Gain smoothing now makes sure you won't get any big jolts as you enter that first corner. Gains are adjusted gradually and smoothly for that luxurious feel.
Gains are not allowed to go above 100% or whatever value was last saved for that combination of track and car, so no more super heavy force feedback into the first corner. Again, for that smooth, sophisticated operation. The gain is allowed to ride gradually as the app gains confidence that it is really needed, so if the steering feels a little light initially, just keep driving, it will ramp up after a few corners.
The app is now always in auto mode (there is a manual override) , and it will store whatever changes you make when you exit the session.
What are the buttons and values, and how do they help me?
This is the overall force feedback strength control. It replaces the old presets. Think of it as "percent of the full potential of your wheel". So, you want to use all of the power available in your wheel, set it to 100%. Do you want to go a bit overboard? Set it to 110%. Wheel too strong? Set it to 90% or anything in between. Find a balance you are happy with. This value is saved individually for each car, so you can preserve differences between cars. Some cars have heavy steering, others are light.
Current Gain (T,S,A)
These values represent the Target gain, the Smoothed gain, and the Actual gain.
Target gain is what the app thinks the gain should be at any particular moment. This can change abruptly and create a harsh jolt in your wheel, so this version has a feature called "gain smoothing". It simply makes the transition between gain values more gradual and smoother. The S-value shows this smoothed gain target. The Actual value is just a readout of the actual current gain, read from the game itself. Mostly useful in manual mode, just to see what your actual gain is set to as the app goes crazy trying to tell you how wrong you are..
Dynamic mode (On/Off)
The dynamic mode will try to maximize gain at all times. It will raise the gain on straights and bring it back as soon as the force feedback loads up in a corner. Good for very weak wheels, or if you just enjoy the maxumum of feedback at all times.
What it says. Resets the current solution and starts over. Use this if you are unsure if the app has got it right, sometimes it can be fooled if you change the FFB strength a lot, or have had some big crashes.
Takes you to the options page, which have the following controls:
With this activated the app will still read the ffb and suggest a value, but it till not automatically adjust the gain for you. Great if you just want the graphs and do your own adjustments to gain.
Direct drive mode. All gains will be presented in Nm instead of percent, and the FFB strength behave slightly differently. It will also reveal a new slider, the "hardware Max Torque" slider. Use this to set the max torque your Direct Drive wheel can deliver.
In DD-mode the app will try to make the average cornering torque equal to whatever you set the FFB Strength slider to. For instance, a car with powersteering and a fairly light steering can be set to 5Nm. That means the app will try to make the wheel torque 5Nm on average through a corner. Some corners will be heavier, some lighter, but it'll average out over a lap.
This value is saved individually for each car, so you can use this to preserve the difference between cars. For instance the car in the previous example, vs a car like the Lotus98T where the average torque could well be 12-14Nm! That means some fast corners easily approach clipping even for an OSW wheel, for instance in Monza's Curva Grande, while the rest of the lap will be relatively lighter.
Default FFB Srength
This slider set the default value for cars you haven't driven before. That way, if you find you "always" adjust the value a bit you can set this as a default and don't have to think about it again.
Graph Display (Off/Histogram/Graph)
Off, disables the graph
In Histogram mode*:
The green curve is the histogram. It shows how much time is spent at each force level.
The yellow curve shows the clipping point. Any force that shows up to the right of this line is clipped
In Graph mode:
The green curve is the current force output to your wheel.
The yellow curve is the filtered force feedback used to suggest the gain setting. I filter it to get rid of most of the big spikes that would skew the suggested gain.
The red line is clipping level. Any force that goes above this line is clipped.
The histogram can be seen as a series of vertical colums. I've just used a graph since that function is built into the Python interface. So, it works like this:
Each column (or pixel in the graph in this instance) represent the time spent a force value. Low forces on the left, high forces on the right.
The app looks at the FFB value every physics tick, and adds one to the corresponding column. So, if the wheel is asked to output 50% torque in a particular tick, one is added to the "50%" column in the histogram. This way you get an accurate representation of the time spent at each force value, and can take appropriate action. You will see that when your FFB gain is set properly for a track/car combo the histogram will most typically (varies with cars of course) peak at around 75% and the taper off towards the right. That means the most time is spent at 75% force, and less and less time is spent at the higher values. If you see a lot of the histogram near and over the clipping line you are spending proportinately more time at and above clipping, and should reduce the gain.
The app uses the histogram in the following way:
Every time I recalculate the gain (every few seconds I think I ended up with, for performance reasons) I look at the histogram from the right to the left. As soon as I see the histogram start to rise up I will determine the value, and calculate the gain needed to put that force at 100%. With the new gain the histogram will gradually readjust and settle at the new value. This is also why the gain changes are less "harsh" with the new method, except in the very beginning when there is very little data and the histogram change a lot in a short time. Once you have a few minutes in the histogram will start to "solidify" a bit and everything settles down.
You can adjust how often the graph is refreshed (not applicable for Histogram for performance reasons). The graph goes from 1 to 30. At 1 the graph is updated once every second, at 30 it is updated 30 times every second. Use high value for detailed graph, a lower number will allow you to see the longer averages and fit more of the lap in the graph. This does not affect the app operation in any way, it is just a display of what's going on with the FFB.
Dynamic mode Threshold and Intensity
The dynamic mode can be adjusted a bit now. The Threshold tells the app how high it is allowed to set the gain, the intensity is how fast it is allowed to ramp up the gain. Experiment with the values here, try to find a set of values that suit your preference and hardware.
Many people are used to having their ffb set too high or too low. I suggest using the suggested gain for a while to "acclimatize" and get used to the new feel.
* Total code rewrite (again)
* All values and settings are accessible from the options and stored, no more tinkering with ini files
* No more profiles and presets, fully adjustable force feedback strength stored per car
* Gain smoothing to avoid jarring gain changes. Also gain is not allowed to go above 100% (or the last stored setting) until the app is confident it's needed.
* Adjustable Dynamic mode
* Direct Drive mode
Fixed the annoying "Stuck at 200%" gain bug. It should also take care of the fact that the app is recording in pits.
Also added @whitestar 's great app icons to the archive.
Added PreferGraph to FFBCli.ini. Set to 1 to have Graph as the default view
Reset button now resets the gain to 100% and sets manual mode
Added "Light" mode. This will allow very little clipping
Fixed the Target Gain calculation. It should now work as expected. With very low target gains you may exerience some clipping even in light mode (TG less than 60%). This is due to the new method and some limitations I had to make for performance and clarity.
Cleaned up the code significantly
Cleaned up the UI significantly
Split the Dynamic mode from the profiles to a separate button. Dynamic mode will now always set "Auto" mode, and always disable auto mode when toggled back off
Finally added a reset button
Removed the logging feature as it is pretty much redundant with the Histogram method
Adjusted clipping thresholds. There is now a pretty significant difference between the profiles
With the new method you can end up "chasing" the gain a little in manual mode in the beginning. This is due to the fact the app will have too little data to make a reliable suggestion. Just leave it in auto for a little while and it'll settle down after a few minutes.
As always, report bugs and performance issues. The Histogram updates every second, the graph at 30ms intervals. The histogram is still the more graphically intensive display mode, but it really shouldn't be THAT hard on your system.
Added histogram mode, and made it the default method.
Fixed Maximal mode division by zero error
Hopefully fixed all modes this time.
Adjusted initial dynamic mode, it is a lot less harsh now. The normal dynamic mode is untouched.
App now correctly loads gains from the Combo.ini file.
Fixed Global mode.
Manual mode when finished gathering data now works
New PreferManual mode in FFBClip.ini makes the app always start in manual mode
New PreferGlobal mode in FFBClip.ini makes the app use the built-in gain saving system (user_ff.ini)
New rendermethod should allow VR users to use the app. The app now runs even when hidden in the right hand app menu. Should be good for screenshots too.
Fixed a tiny typo that prevented manual mode after the app is satisfied it has enough data.
Complete rewrite of the entire app, from the ground up. The big changes are outlined in the above text.
Load and save gain per car/track combination
Logging of FFB values to a file
Config file for basic app setup. The different options are explained in the file
Added a few switches in the ini file to control the UI.
Minimized: Will launch a smaller version of the app
Indicate Clipping: will turn the app window background red whenever you are clipping as a visual aid.
Both these are work in progress and I will adjust and improve them over time.
Added a config file where you can set your Target Gain value permanently. If your hardware dictate that your maximum output should be 85% set 0.85 in the config file.
App now reads the value you last set for the current car. It still can't read the ffb value while on track since the .ini file isn't updated, but the next time you open the game the file will be updated. That means that if you don't change anything the readout will be correct, but you still need to update if you change the gain while driving.
Reverted some changes from 3.0, and enhanced some functionality. First of all you will now be able to change more stuff on the fly, and see the changes immediately. The only thing that will reset the solution is changing the in-car gain setting. This number needs to match your actual gain setting (easily viewable from the built-in FFB Controller app). These numbers need to match for the app to be accurate. This works exactly like the old car setup multiplier.
I've ditched the text feedback, and the confidence. The app should now give pretty accurate result quite fast, within a lap or a few minutes.
Averaged/Clip free: This is where you select the method to use for the suggestion. Averaged will take the average of a number of ffb peaks. This solution will generate the strongest ffb, with a small amount of clipping. The Clip free solution will strive to get a very limited amount of clipping, so it will feel weaker overall, but should be very close to clip free.
Buffer: This is the number of ffb peaks to consider for the averaged solution method.
** Obsolete info below this line **
Due to the major changes in Assetto Corsa v1.3 I've done a little reevaluation and have redone the app a bit. The graph is now gone, in favour of a sleeker UI, and more direct afvice on what to do.
So, there are a few buttons that's gone away, and some new info that's present.
Confidence: Shows how "certain" the app is of the suggestion it is about to make. When this hits 100% it will evaluate and suggest that you raise, lower or leave your FFB as is.
The other infoboxes are unchanged.
Reset: This button resets the current buffer and values. This is needed if you lower the FFB ingame (not in the main menu, but with the numpad). So, whenever you lower the ffb, press this button afterward, or you might get the wrong values. This is because I have no way to know that you have lowered the FFB, as far as the app is aware you are just on a straight or somewhere your ffb is lower.I am hoping for some added Python variables to automate this process, but for now I suggest you just start low with ffb (main menu gain of 60-70%) and primarily adjust the ffb UP as suggested.
There's two versions of the app, with and without the graph.
The app is now independend of fps. That means that the suggested gain should be consistent regardless of fps. Those of you with anything other than 60fps should redo your calibrations just to be sure.
The graph draw is also independent of fps now. The grap will redraw at 33fps regardless of your rendering fps, so we should all see the same thing. This has been an issue for those with very high fps in particular, where the graph just fly past the window and is almost unreadable, and very much less useful than intended.
General cleanup of the code and methods.
The "New" method is now selected by default. This method averages the last 20 FFB events and present the resulting suggestion. This gives a more robust suggestion, and allows some clipping on tracks where there is a few dominant FFB events.
New colour codes for the clipping percentage numbers. The Hard Clipping % will be green at 0% and gradually turn red as it climbs towards 5%. The Mild Clip will be blue at 0%, go to green at 1% and then red at 5%. The reason for this is that I realize that not everyone reads this post and the instructions for the app, and since green is good and red is bad I figured I'd give them a "heads up" by the colours.
Tweaked filter and targets to make a better suggestion. The suggested value will now have a little more headroom, as I realized the new method had a tendency to generate a little more clipping that I wanted.
Added a "Car setup multiplier" spinner. This lets the app know (manually) what the car setup multipier is set to, and can suggest accordingly.
Note: You have to MANUALLY set Car setup multiplier according to the actual value for the app to be accurate
Note2: When you select the "main Menu" gain suggestion the app assumes that you also want to reset the car setup multiplier to the default 100% and will suggest a main menu gain that will accomplish this.
Note3: Some of the usage and technical info further down this post may be old, redundant or inaccurate due to app updates. I'll update the info as soon as possible.
* Some additions and general cleanup in this version. I have some new features:
- Target gain: If your wheel starts to clip before the signal reach 100% you can tell the app to target a lower maximum output. This is useful for G27 owners who run their profiler at 107%. A typical G27 will clip at around 85% with those settings, and the app should then be set for a target gain of 85%
- Gain type: Select if the app should suggest your new main menu FFB setting or the car setup multiplier. Note that the app cannot read your current car setup multiplier, so it will assume that your car setup multiplier is 100%. So, what does THATmean? An example:
You load the sim and drive normally. "Car Setup" is the default gain type, and the app will assume that your car setup multiplier is at the default 100% (this value is reset every time you load the sim). After a whie the suggested number turns more and more green, indicating that the app is getting pretty sure this is close to the correct number. After a lap or two the number should be fully green and you can put it into your car setup. If you continue to drive now the suggestion should end up very close to 100% since the app thinks the multiplier is still at 100% and as far as the app is concerned the FFB level is near perfect at that setting.
Note: If you change the gain type or change the gain target the calculations will start over from scratch. This can be a nice way to reset the calculations if you have a big grash that miht impact the suggested number.
* Rewrote the suggestion display a little. The app will now show a suggestion immediately, and will refine the suggestion as you drive. The colour of the suggested value will gradually go from red to green as the app gets more and more confident that the suggestion is correct. So while driving the number will get more and more green, until a new max force event occur (you come up to a corner where the forces are even higher than before), in which case the new suggestion is displayed and the confidence level is reset to red. This means that as long as the number is reasonably green and you have been driving at least a full lap you should be good.
* Code now reverts to 1.0 code if the config file isn't found. Look here for instructions on how to let the app know where your controls.ini file is
* The app now suggest a value you can input directly, no more manual multiplication
* The app now display your current FFB gain setting
Big thanks to Meujeu for the Config code!
* Initial release