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); }
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); } } }