﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class VUMeters : MonoBehaviour
{
    public GameObject VUMeterUIPrefab;
    public Transform VUMetersContainer;

    private CsoundUnity csound;
    private Dictionary<string, Slider> vuMeters;
    private AudioSource source;

    // Start is called before the first frame update
    IEnumerator Start()
    {
        
        csound = this.GetComponent<CsoundUnity>();
        while (!csound.IsInitialized)
        {
            yield return null;
        }

        vuMeters = new Dictionary<string, Slider>();

        foreach (var ac in csound.availableAudioChannels)
        {
            var go = Instantiate(VUMeterUIPrefab, VUMetersContainer, false);
            var slider = go.GetComponent<Slider>();
            if (slider != null) vuMeters.Add(ac, slider);
            else Debug.LogWarning("Please add a slider in the VU Meter Prefab");
        }
    }

    // Update is called once per frame
    void Update()
    {
        foreach (var meter in vuMeters)
        {
            meter.Value.value = (float)csound.GetChannel(meter.Key + "Vol") / (float)csound.Get0dbfs();
        }
    }

    
}
