Exemplo n.º 1
0
        protected override void OnUpdate(float time, float previousTime)
        {
            if (_PlayOver)
            {
                return;
            }
            if (audioClip == null)
            {
                return;
            }
            if (source != null && !_PlayLoop)
            {
                float currentTimeLength = time - clipOffset;
                if (currentTimeLength > audioClip.length)
                {
                    _PlayOver = true;
                    return;
                }
                var weight      = Easing.Ease(EaseType.QuadraticInOut, 0, 1, GetClipWeight(time));
                var totalVolume = weight * volume * track.weight;

                AudioSampler.Sample(source, audioClip, currentTimeLength, previousTime - clipOffset, totalVolume, track.ignoreTimeScale);
                source.panStereo = Mathf.Clamp01(stereoPan + track.stereoPan);
                source.loop      = _PlayLoop;
                if (!string.IsNullOrEmpty(subtitlesText))
                {
                    var lerpColor = subtitlesColor;
                    lerpColor.a = weight;
                    DirectorGUI.UpdateSubtitles(string.Format("{0}{1}", parent is ActorAudioTrack? (actor.name + ": ") : "", subtitlesText), lerpColor);
                }
            }
        }
Exemplo n.º 2
0
        protected override void OnUpdate(float time, float previousTime)
        {
            if (source != null)
            {
                var weight   = Easing.Ease(EaseType.QuadraticInOut, 0, 1, GetClipWeight(time));
                var settings = track.sampleSettings;
                settings.volume *= weight * volume;
                settings.pitch  *= pitch;
                settings.pan    += stereoPan;

                AudioSampler.Sample(source, audioClip, time - clipOffset, previousTime - clipOffset, settings);

                if (AutoJawSync != null)
                {
                    AutoJawSync.SyncUpdate();
                }

                if (!string.IsNullOrEmpty(subtitlesText))
                {
                    var lerpColor = subtitlesColor;
                    lerpColor.a = weight;
                    DirectorGUI.UpdateSubtitles(string.Format("{0}{1}", parent is ActorAudioTrack ? (actor.name.Replace("(Clone)", "") + ": ") : "", subtitlesText), lerpColor);
                }
            }
        }
Exemplo n.º 3
0
    public void Update()
    {
        if (AudioSampler.Instance.AudioPlaybackState == AudioPlaybackState.Playing)
        {
            double[] _dAudioSamples = AudioSampler.Instance.GetSamples();

            if (_detector != null)
            {
                _detector.UpdatePLP(ref _dAudioSamples, AudioSampler.Instance.ChannelCount, AudioSampler.Instance.ClipFrequency);
            }

            _fftRawBins = AudioSampler.Instance.GetFFTOutputBins(ref _dAudioSamples);
            System.Array.Clear(_fftSegregated, 0, _fftSegregated.Length);
            AudioSampler.BinFFTOutput(ref _fftRawBins, ref _fftSegregated, 2, AudioSampler.Instance.ClipFrequency, _frequenciesToMonitor);

            AudioSampler.NormalizeFFTOutput(ref _fftSegregated, AudioSampler.Instance.ClipFrequency);
            for (int i = 0; i < _fftSegregated.Length; ++i)
            {
                float barCount = (float)_fftSegregated[i];
                if (barCount > _barHeights [i])
                {
                    _barHeights [i] = barCount;
                }

                if (_barHeights [i] > 0)
                {
                    _barHeights [i] -= Mathf.Min(_decayRate, _barHeights[i]);
                }
            }
        }
    }
Exemplo n.º 4
0
 public void Awake()
 {
     AudioSampler.InstantiateSampler(AudioSamplerType.Local);
     _commonRect    = new Rect();
     _fftSegregated = new double[_frequenciesToMonitor.Length];
     _barHeights    = new float[_fftSegregated.Length];
 }
Exemplo n.º 5
0
    public static void RegenerateAudioSampleMask()
    {
        if (Selection.objects != null && Selection.objects.Any(obj => (obj is AudioSampleMask)))
        {
            var masks = Selection.objects
                        .Where(obj => obj is AudioSampleMask)
                        .Select(mask => (AudioSampleMask)mask);

            foreach (var mask in masks)
            {
                if (mask != null && mask.clip != null)
                {
                    mask.values = AudioSampler.LoadSamples(mask.clip, SAMPLE_STEP_SIZE);
                }
            }
        }
    }
Exemplo n.º 6
0
    public static void CreateAudioSampleMask()
    {
        if (Selection.objects != null && Selection.objects.Any(obj => (obj is AudioClip)))
        {
            var clips = Selection.objects
                        .Where(obj => obj is AudioClip)
                        .Select(clip => (AudioClip)clip);

            foreach (var clip in clips)
            {
                AudioSampleMask newMask = ScriptableObject.CreateInstance <AudioSampleMask>();
                newMask.clip   = clip;
                newMask.values = AudioSampler.LoadSamples(clip, SAMPLE_STEP_SIZE);

                string path = AssetDatabase.GetAssetPath(clip).Split('.')[0];
                AssetDatabase.CreateAsset(newMask, path + "_Mask.asset");
            }
        }
    }