Вот код
Синтаксис:
Используется csharp
void Start()
{
audioSource = GetComponent<AudioSource> ();
if (UseMicrophone)
{
if (Microphone.devices.Length > 0)
{
SelectedDevice = Microphone.devices[0].ToString();
audioSource.clip = Microphone.Start(SelectedDevice, true, 999, AudioSettings.outputSampleRate);
}
else
{
UseMicrophone = false;
}
}
else
{
audioSource.clip = audioClip;
}
audioSource.Play();
}
private void Update()
{
loundless = getVolume() * sensivity;
}
float getVolume()
{
float levelMax = 0;
float[] waveData = new float[_sampleWindow];
int micPosition = Microphone.GetPosition(null) - (_sampleWindow + 1);
if (micPosition < 0)
{
return 0;
}
audioClip.GetData(waveData, micPosition);
for (int i = 0; i < _sampleWindow; ++i)
{
float wavePeak = waveData[i] * waveData[i];
if (levelMax < wavePeak)
{
levelMax = wavePeak;
}
}
return levelMax;
}
{
audioSource = GetComponent<AudioSource> ();
if (UseMicrophone)
{
if (Microphone.devices.Length > 0)
{
SelectedDevice = Microphone.devices[0].ToString();
audioSource.clip = Microphone.Start(SelectedDevice, true, 999, AudioSettings.outputSampleRate);
}
else
{
UseMicrophone = false;
}
}
else
{
audioSource.clip = audioClip;
}
audioSource.Play();
}
private void Update()
{
loundless = getVolume() * sensivity;
}
float getVolume()
{
float levelMax = 0;
float[] waveData = new float[_sampleWindow];
int micPosition = Microphone.GetPosition(null) - (_sampleWindow + 1);
if (micPosition < 0)
{
return 0;
}
audioClip.GetData(waveData, micPosition);
for (int i = 0; i < _sampleWindow; ++i)
{
float wavePeak = waveData[i] * waveData[i];
if (levelMax < wavePeak)
{
levelMax = wavePeak;
}
}
return levelMax;
}