Esempio n. 1
0
        private MAudioChannel CreateChannelControl(int i)
        {
            var channelControl = new MAudioChannel();

            //channelControl.ColorLevelBack = ColorLevelBack;
            //channelControl.ColorLevelOrg = ColorLevelOrg;
            //channelControl.ColorLevelHi = ColorLevelHi;
            //channelControl.ColorLevelMid = ColorLevelMid;
            //channelControl.ColorLevelLo = ColorLevelLo;
            //channelControl.ColorOutline = ColorOutline;
            //channelControl.ColorGainSlider = ColorGainSlider;
            //channelControl.Risk = 6;

            channelControl.GainChanged           += new RoutedEventHandler(MAudioControl_OnGainChanged);
            channelControl.ChannelEnabledChanged += new RoutedEventHandler(MAudioMeter_OnEnableChanged);

            double dblGain = 0;
            bool   bMute   = true;

            try
            {
                // The channels could be changed in this moment.
                dblGain = GetTrackGain(m_pMAudioTrack, i);
                bMute   = GetTrackMute(m_pMAudioTrack, i);
            }
            catch (System.Exception)
            {
            }

            channelControl.Gain           = dblGain;
            channelControl.ChannelEnabled = !bMute;

            return(channelControl);
        }
Esempio n. 2
0
        private void timerUpdate_Tick(object sender, EventArgs e)
        {
            if (m_pMAudio == null)
            {
                return;
            }

            // Check number of tracks
            int nTracks = GetAudioTracksCount();

            if (nTracks <= 0)
            {
                this.IsEnabled = false;
                //m_pMAudioTrack = null;
                return;
            }

            this.IsEnabled = true;

            if (comboBoxTrack.Items.Count != nTracks)
            {
                m_nCurrentTrack = Math.Min(nTracks - 1, m_nCurrentTrack);
                FillTracks();
                UpdateControl(m_nCurrentTrack);
            }


            if (m_pMAudioTrack != null)
            {
                try
                {
                    // TODO: use loudOut.nValidChannels
                    //int nChIn, nChOut, nChOutIdx;
                    //m_pMAudioTrack.TrackChannelsGet(out nChIn, out nChOutIdx, out nChOut);
                    int nChOut = GetTrackOutputChannels(m_pMAudioTrack);
                    if (nChOut != channelPanel.Children.Count)
                    {
                        UpdateControl(comboBoxTrack.SelectedIndex);
                    }


                    M_AUDIO_TRACK_LOUDNESS loudOrg;
                    M_AUDIO_TRACK_LOUDNESS loudOut;
                    GetTrackLoudness(m_pMAudioTrack, out loudOrg, out loudOut);

                    // Get number of channels
                    //int nChIn, nChOut, nChOutIdx;
                    //m_pMAudioTrack.TrackChannelsGet(out nChIn, out nChOutIdx, out nChOut);

                    //int nChOut=GetTrackOutputChannels(m_pMAudioTrack);
                    //if (nChOut != arrChannels.Length)
                    //{
                    //    UpdateControl(comboBoxTrack.SelectedIndex);
                    //}


                    for (int i = 0; i < channelPanel.Children.Count; i++)
                    {
                        MAudioChannel channelControl = (MAudioChannel)channelPanel.Children[i];
                        double        gain           = GetTrackGain(m_pMAudioTrack, i);
                        if (gain != channelControl.Gain)
                        {
                            channelControl.Gain = gain;
                        }

                        if (i >= loudOut.nValidChannels)
                        {
                            channelControl.Level    = -60;
                            channelControl.LevelOrg = -60;
                            channelControl.Refresh();
                            //arrChannels[i].Invalidate();
                            channelControl.IsEnabled = false;
                        }
                        else
                        {
                            channelControl.Level    = loudOut.arrVUMeter[i];
                            channelControl.LevelOrg = loudOrg.arrVUMeter[i]; // Original
                            channelControl.Refresh();
                            //arrChannels[i].Invalidate();
                            channelControl.IsEnabled = true;
                        }
                    }
                }
                catch (System.Exception ex)
                {
                    // If number of tracks changed or e.g. playlist loaded -> the current track may be not valid
                    UpdateControl(comboBoxTrack.SelectedIndex);
                }
            }
        }