Exemplo n.º 1
0
    public override void Init()
    {
        if (_hasInit)
        {
            return;
        }
        base.Init();
        _spectrumAnalyzer  = GameObject.Find(Constants.AbjectAudioInputs).GetComponent <SpectrumAnalyzer>();
        _audioLevelTracker = GameObject.Find(Constants.AbjectAudioInputs).GetComponent <AudioLevelTracker>();
        _mainIcon          = GameObject.Find("MainIcon").GetComponent <SpriteRenderer>();
        _singleTapSpawn    = GameObject.Find("SingleTapSpawn").transform;
        _customTapSpawn    = GameObject.Find("CustomTapSpawn").transform;
        _heldSpawn         = GameObject.Find("HeldSpawn").transform;
        _timeHeldSpawn     = GameObject.Find("TimeHeldSpawn").transform;

        //PlayerPrefs
        _lastSavedDeviceName  = PlayerPrefHelper.GetLastSavedDeviceDefault();
        _currentChannel       = PlayerPrefHelper.GetCurrentChannel();
        HzOffset              = PlayerPrefHelper.GetHzOffset();
        RequiredFrames        = PlayerPrefHelper.GetRequiredFrames();
        PeaksPriority         = PlayerPrefHelper.GetPeaksPriority();
        HeldReset             = PlayerPrefHelper.GetHeldReset();
        SingleTapReset        = PlayerPrefHelper.GetSingleTapReset();
        _levelDynamicRange    = PlayerPrefHelper.GetLevelDynamicRange();
        _levelGain            = PlayerPrefHelper.GetLevelGain();
        _spectrumDynamicRange = PlayerPrefHelper.GetSpectrumDynamicRange();
        _spectrumGain         = PlayerPrefHelper.GetSpectrumGain();
        SpectrumThreshold     = PlayerPrefHelper.GetSpectrumThreshold();

        //FieldsData
        _idData                   = Helper.GetFieldData("Id");
        _channelData              = Helper.GetFieldData("Channel");
        _hzOffsetData             = Helper.GetFieldData("HzOffset");
        _requiredFramesData       = Helper.GetFieldData("RequiredFrames");
        _peaksPriorityData        = Helper.GetFieldData("PeaksPriority");
        _heldResetData            = Helper.GetFieldData("HeldReset");
        _singleTapResetData       = Helper.GetFieldData("TapReset");
        _levelDynamicRangeData    = Helper.GetFieldData("LevelDynamicRange");
        _levelGainData            = Helper.GetFieldData("LevelGain");
        _spectrumDynamicRangeData = Helper.GetFieldData("SpectrumDynamicRange");
        _spectrumGainData         = Helper.GetFieldData("SpectrumGain");
        _spectrumThresholdData    = Helper.GetFieldData("SpectrumThreshold");

        Devices  = AudioSystem.InputDevices;
        _hasInit = true;
    }
Exemplo n.º 2
0
    public bool Draw(AudioLevelTracker tracker, float heldReset, float singleTapReset)
    {
        if (!_hasInit)
        {
            Init();
        }

        const float kMeterRange = 60;
        var         amp         = 1 + tracker.inputLevel / kMeterRange;
        var         peak        = 1 - tracker.currentGain / kMeterRange;
        var         dr          = tracker.dynamicRange / kMeterRange;

        var drStart = peak - dr;

        DrawRect(drStart, peak, _dynamicRange);

        var y1 = Mathf.Min(amp, drStart);
        var y2 = Mathf.Min(peak, amp);

        DrawRect(0, y1, _levelLower);
        DrawRect(y1, y2, _levelInside);
        DrawRect(y2, amp, _levelOver);

        //var y3 = peak + dr * (tracker.normalizedLevel - 1);
        var held      = (heldReset / 100) * dr;
        var singleTap = (singleTapReset / 100) * dr;

        DrawRect(drStart + held, drStart + held, _levelHeldReset, constantsScale: true);
        DrawRect(drStart + singleTap, drStart + singleTap, _levelSingleTapReset, constantsScale: true);

        if (y2 > y1)
        {
            return(y2 < drStart + held);
        }
        else
        {
            return(y1 < drStart + held);
        }
    }
Exemplo n.º 3
0
        // Draw a level meter with a given AudioLevelTracker instance.
        public static void DrawMeter(AudioLevelTracker tracker)
        {
            var rect = GUILayoutUtility.GetRect(128, 10);

            const float kMeterRange = 60;
            var         amp         = 1 + tracker.inputLevel / kMeterRange;
            var         peak        = 1 - tracker.currentGain / kMeterRange;
            var         dr          = tracker.dynamicRange / kMeterRange;

            // Background
            DrawRect(0, 0, 1, 1, rect, Styles.Background);

            // Dynamic range indicator
            DrawRect(peak - dr, 0, peak, 1, rect, Styles.Gray);

            // Amplitude bar
            var x1 = Mathf.Min(amp, peak - dr);
            var x2 = Mathf.Min(peak, amp);

            DrawRect(0, 0, x1, 1, rect, Styles.Green1);  // Lower than floor
            DrawRect(x1, 0, x2, 1, rect, Styles.Green2); // Inside the range
            DrawRect(x2, 0, amp, 1, rect, Styles.Red);   // Higher than nominal

            // Output level bar
            var x3 = peak + dr * (tracker.normalizedLevel - 1);

            DrawRect(x3 - 3 / rect.width, 0, x3, 1, rect, Color.green);

            // Label: -60dB
            var pm60 = new Vector2(rect.xMin + 1, rect.yMax - 8);

            Handles.Label(pm60, "-60dB", EditorStyles.miniLabel);

            // Label: 0dB
            var p0 = new Vector2(rect.xMin + rect.width - 22, rect.yMax - 8);

            Handles.Label(p0, "0dB", EditorStyles.miniLabel);
        }