EngineSounds.cs
using Sandbox;
using Sandbox.Audio;
using static WheelController;

public sealed class EngineSounds : Component
{
	[Property] Rigidbody CarBody;
	WheelController WheelController;

	[Property] SoundPointComponent IdleSound { get; set; }
	[Property] SoundPointComponent GasSound { get; set; }
	[Property] SoundPointComponent VollGasSound { get; set; }
	[Property] public SoundPointComponent ReifenSound { get; set; }

	private SoundHandle idleHandle;
	private SoundHandle gasHandle;
	private SoundHandle vollGasHandle;
	private SoundHandle reifenHandle;

	float reifenSpeed;

	TimeSince SinceSoundRestart;

	protected override void OnStart()
	{
		WheelController = GameObject.GetComponent<WheelController>();

		/*
		// Alle Sounds geloopt starten, aber initial stumm
		idleHandle = Sound.Play( IdleSound, CarBody.WorldPosition );
		gasHandle = Sound.Play( GasSound, WorldPosition );
		vollGasHandle = Sound.Play( VollGasSound, WorldPosition );
		reifenHandle = Sound.Play( ReifenSound, WorldPosition );

		idleHandle.Parent = CarBody.GameObject.Children.First();
		gasHandle.Parent = CarBody.GameObject.Children.First();
		vollGasHandle.Parent = CarBody.GameObject.Children.First();
		reifenHandle.Parent = CarBody.GameObject.Children.First();

		idleHandle.FollowParent = true;
		gasHandle.FollowParent = true;
		vollGasHandle.FollowParent = true;
		reifenHandle.FollowParent = true;

		idleHandle.Volume = 0;
		gasHandle.Volume = 0;
		vollGasHandle.Volume = 0;
		reifenHandle.Volume = 0;
		*/
	}

	protected override void OnFixedUpdate()
	{
		if (SinceSoundRestart > 10f)
		{
			Log.Info( "Restarting Engine Sounds" );

			IdleSound.Enabled = false;
			// GasSound.Enabled = false;
			VollGasSound.Enabled = false;
			ReifenSound.Enabled = false;

			IdleSound.Enabled = true;
			// GasSound.Enabled = true;
			VollGasSound.Enabled = true;
			ReifenSound.Enabled = true;

			SinceSoundRestart = 0f;
		}


		// Reifen Speed Durchschitt
		reifenSpeed = (WheelController.RearLeft.SpinSpeed + WheelController.RearRight.SpinSpeed + WheelController.FrontLeft.SpinSpeed + WheelController.FrontRight.SpinSpeed) * 0.25f;

		IdleSound.Volume = CarBody.Velocity.Length.Remap(0, 3600, 0.2f, 0.4f);
		//gasHandle.Volume = reifenSpeed.Remap( 100, 3000, 0.1f, 1 );
		VollGasSound.Volume = CarBody.Velocity.Length.Remap( 2000, 3200, 0, 0.6f );
		ReifenSound.Volume = CarBody.Velocity.Length.Remap( 100, 3000, 0, 0.5f );

		IdleSound.Pitch = CarBody.Velocity.Length.Remap( 1000, 3600, 0.8f, 1.6f );
		// gasHandle.Pitch = reifenSpeed.Remap( 100, 3000, 0.1f, 1 );
		VollGasSound.Pitch = CarBody.Velocity.Length.Remap( 2000, 3200, 0.8f, 1.2f );
		// reifenHandle.Pitch = reifenSpeed.Remap( 100, 6000, 0, 1 );
	}

}