Revs in neutral aren't realistic - Karting tutorial with my own sounds

Hi there, please see the short video attached → fmod revs kart - YouTube

When the car is in neutral, before the race starts, if you rev the engine, it peaks immediately, instead of moving upwards in pitch as it should organically sound.

I’m using this script, as per the karting tutorial, but I am using my own sounds made in fmod.

using UnityEngine;

namespace KartGame.KartSystems
{
///


/// This class produces audio for various states of the vehicle’s movement.
///

public class ArcadeEngineAudio : MonoBehaviour
{
public float minRPM = 0;
public float maxRPM = 5000;
ArcadeKart arcadeKart;

    void Awake()
    {
        arcadeKart = GetComponentInParent<ArcadeKart>();
    }

    void Update()
    {
        float kartSpeed = arcadeKart != null ? arcadeKart.LocalSpeed() : 0;
        // set RPM value for the FMOD event
        float effectiveRPM = Mathf.Lerp(minRPM, maxRPM, kartSpeed);
        var emitter = GetComponent<FMODUnity.StudioEventEmitter>();
        emitter.SetParameter("RPM", effectiveRPM);
    }
}

}

What do I need to do to make those neutral rev’s sound organic?

Please let me know any other information you need from me

Thanks so much for your help!

Check inside ArcadeKart.cs, the public float LocalSpeed() method has a line that says “use this value to play kart sound when it is waiting the race start countdown.”

In there you can ramp a value up and down to get engine revs, e.g:

     float t = 0f;
     float ramp = 0.01f;

     public float LocalSpeed()
     {
         if (m_CanMove)
         {
             float dot = Vector3.Dot(transform.forward, Rigidbody.velocity);
             if (Mathf.Abs(dot) > 0.1f)
             {
                 float speed = Rigidbody.velocity.magnitude;
                 return dot < 0 ? -(speed / m_FinalStats.ReverseSpeed) : (speed / m_FinalStats.TopSpeed);
             }
             return 0f;
         }
         else
         {
             // use this value to play kart sound when it is waiting the race start countdown.
             if(Input.Accelerate)
             {
                 t = Mathf.Min(t + ramp, 1f);
             }
             else
             {
                 t = Mathf.Max(t - ramp, 0f);
             }
             return t;
         }
     }

Thanks so much for the help! Really appreciate it