Dynamic Sound: Wind up Wind down Audio

Id like to know if its even possible to make a script or anything of the sort that allows a button to be help and a sound winds up and when released the sound winds back down at the point in which you let it go. I know I could script with the OnMouseDown play this audio and OnMouseUp play this audio but Im trying to make it more dynamic but I have no idea where to start, how to set up the audio files, the script etc. Im working on a Siren Simulator that recreates real Siren Systems that Emergency Services use. Right now Im trying to create two sirens that both use this Dynamic Wind up and Wind down system but have no idea where to start with this idea and was hoping you guys could maybe hint me.

The 2 Sirens are the Federal Signal EQ2B and the FDNY Federal Signal PA300 which both have a manual siren option in which the Officer who rides in the Passenger’s seat has a foot pedal on the right that winds the siren up and when released winds the siren down. On the left he has a foot pedal that runs the airhorn on the truck. Here is a video of the two sirens in action: (First truck has an EQ2B, Second has a PA300) FDNY Engine # 1 & Spare Ladder # 24 Responding - YouTube

FDNY PA300 Demo(I own this Siren): Federal Signal PA300 FDNY - YouTube

EQ2B Demo (I own this siren) : Federal Signal EQ2B : Review/Demo - YouTube

Here is my progress on this one: - YouTube

This should do pretty much everything you want:

using UnityEngine;
using System.Collections;

public class PitchChange : MonoBehaviour 
{

public AudioSource Audio;
public float StartingPitch = 1.0f;
public float EndingPitch = 2.0f; 

public int PitchScaleFactor = 3;
bool isMousePressed = false;

void OnMouseDown()
{
	isMousePressed=true;

}

void OnMouseUp()
{
	isMousePressed=false;
}

// Update is called once per frame
void Update () 
{
	//If mouse is pressed, increase pitch
	if(isMousePressed == true)
	{
		if(Audio.pitch <= StartingPitch)
		{
			Audio.Play();
		}
		
		//Only increase pitch if "EndingPitch" value has not been reached
		if(Audio.pitch <= EndingPitch)
		{
			Audio.pitch += ((Time.deltaTime * StartingPitch) / PitchScaleFactor);
		}
	}
	//Otherwise, decrease pitch back to normal, until we reach starting pitch
	else
	{
		if(Audio.pitch > StartingPitch)
		{
			Audio.pitch -= ((Time.deltaTime * StartingPitch) / PitchScaleFactor);
		}
		else
		{
			Audio.Stop();
		}
	}
	
	Debug.Log(Audio.pitch);
}
}

USAGE

Create a “beep” audio clip, and add it to the scene as an audio source.

Create a button and attach this script to it.

Drag the audio source onto the button.
Click the button to “wind-up” and release to “wind-down” back to normal