Страница 1 из 1

Микрофон без звука

СообщениеДобавлено: 17 июл 2019, 00:59
Overmind
Я использую скрипт который определяет громкость микрофона. Но при этом он записывает клип который ставит на прослушивание в AudioSource, я получается слышу сам себя. Но если я выключу громкость в AudioSource то громкость не будет определятся. Как можно получить громкость но при этом не слышать сам себя? И еще, если я сверну игру то этот клип перестает записываться и начинает проигрываться с самого начала, можно как то начинать запись заново если старая закончилась?
Код:
Синтаксис:
Используется csharp
void Start()
    {

        sensivity = StaticLoaderSettings.sensivity;
        audioSource = GetComponent<AudioSource> ();
        if (UseMicrophone)
        {
            if (Microphone.devices.Length > 0)  
            {
                SelectedDevice = Microphone.devices[0].ToString();
                audioSource.clip = Microphone.Start(SelectedDevice, true, 2, 44100);

               
            }
            else
            {
                UseMicrophone = false;
            }
        }
        else
        {
            audioSource.clip = audioClip;
        }
        audioSource.Play();
    }

    private void Update()
    {
        loundless = getVolume() * sensivity;
    }

    float getVolume()
    {
        float[] data = new float[128];
        float a = 0;
        audioSource.GetOutputData(data, 0);
        foreach (float s in data)
        {
            a += Mathf.Abs(s);
        }
        return a / 128;
    }

Re: Микрофон без звука

СообщениеДобавлено: 17 июл 2019, 10:19
AngryCat
А если в Audio Source поставить галочку Mute? Будет записываться?
И еще вопрос, чему равна переменная audioClip в этой строке?
Синтаксис:
Используется csharp
audioSource.clip = audioClip;

Re: Микрофон без звука

СообщениеДобавлено: 17 июл 2019, 11:03
Overmind
AngryCat писал(а):А если в Audio Source поставить галочку Mute? Будет записываться?
И еще вопрос, чему равна переменная audioClip в этой строке?
Синтаксис:
Используется csharp
audioSource.clip = audioClip;

Если поставить mute тоже ничего записываться не будет.
Эта строчка означает что если запись с микрофона отключена будет проигрыватся другой клип


Re: Микрофон без звука

СообщениеДобавлено: 17 июл 2019, 11:28
IDoNotExist
Overmind писал(а):Я использую скрипт который определяет громкость микрофона. Но при этом он записывает клип который ставит на прослушивание в AudioSource, я получается слышу сам себя. Но если я выключу громкость в AudioSource то громкость не будет определятся. Как можно получить громкость но при этом не слышать сам себя? И еще, если я сверну игру то этот клип перестает записываться и начинает проигрываться с самого начала, можно как то начинать запись заново если старая закончилась?
Код:
Синтаксис:
Используется csharp
void Start()
    {

        sensivity = StaticLoaderSettings.sensivity;
        audioSource = GetComponent<AudioSource> ();
        if (UseMicrophone)
        {
            if (Microphone.devices.Length > 0)  
            {
                SelectedDevice = Microphone.devices[0].ToString();
                audioSource.clip = Microphone.Start(SelectedDevice, true, 2, 44100);

               
            }
            else
            {
                UseMicrophone = false;
            }
        }
        else
        {
            audioSource.clip = audioClip;
        }
        audioSource.Play();
    }

    private void Update()
    {
        loundless = getVolume() * sensivity;
    }

    float getVolume()
    {
        float[] data = new float[128];
        float a = 0;
        audioSource.GetOutputData(data, 0);
        foreach (float s in data)
        {
            a += Mathf.Abs(s);
        }
        return a / 128;
    }

AudioSource вообще не нужен в этой ситуации, данную задачу можно решить с помощью AudioClip с микрофона.