示例#1
0
        private bool IsAudioTrackEndReached(ref ZPlay player)
        {
            int positionMilisec         = Convert.ToInt32(GetPosition(ref player).ms);
            int audioTrackLengthMilisec = Convert.ToInt32(GetStreamInfo(ref player).Length.ms);

            return((positionMilisec + 1000) >= audioTrackLengthMilisec);
        }
示例#2
0
 public RadioDeskPlayer()
 {
     this.player        = new ZPlay();
     this.stream_status = new TStreamStatus();
     this.stream_info   = new TStreamInfo();
     this.player.GetPlayerVolume(ref this.volL, ref this.volR);
 }
示例#3
0
        public SoundPlayer(CASCFile file)
        {
            InitializeComponent();

            this.file = file;
            localPath = Path.Combine(Constants.TEMP_DIRECTORY, file.FullName);

            player = new ZPlay();
            if (!File.Exists(localPath))
            {
                EventManager.FileExtractComplete += OnFileExtractComplete;

                RunnerExtractItem extract = new RunnerExtractItem(file);
                runnerID = extract.runnerID;
                extract.Begin();

                SetState("Extracting file...");
            }
            else
            {
                ready = true;
                Play();
            }

            UI_TrackTitle.Text = file.Name;
            Text = file.Name + " - W3DT";

            UI_VolumeBar.Value = Program.Settings.SoundPlayerVolume;
            player.SetPlayerVolume(UI_VolumeBar.Value, UI_VolumeBar.Value);
        }
示例#4
0
 public void ResetToggleButtons(ref ZPlay player)
 {
     if (reversePlaybackToggleButton.ToggleState == ToggleButtonState.Active)
     {
         reversePlaybackToggleButton.SwitchState();
     }
 }
示例#5
0
        static void Main(string[] args)
        {
            ZPlay play = new ZPlay();

            play.OpenFile(@"E:\kugou【数码宝贝】Butterfly-乐队Cover+被选中的八个女子.mp3", TStreamFormat.sfAutodetect);
            play.StartPlayback();
        }
示例#6
0
        private TStreamTime GetPosition(ref ZPlay player)
        {
            TStreamTime position = new TStreamTime();

            player?.GetPosition(ref position);

            return(position);
        }
示例#7
0
        private TStreamInfo GetStreamInfo(ref ZPlay player)
        {
            TStreamInfo streamInfo = new TStreamInfo();

            player?.GetStreamInfo(ref streamInfo);

            return(streamInfo);
        }
示例#8
0
        public void SetProgressBar(ref ZPlay player)
        {
            playbackProgressBarAdv.Minimum = 0;
            playbackProgressBarAdv.Value   = 0;

            TStreamInfo info = GetStreamInfo(ref player);

            playbackProgressBarAdv.Maximum = Convert.ToInt32(info.Length.ms);
        }
示例#9
0
        public static void LibZPL(string FileInGameData)
        {
            ZPlay player = new ZPlay();

            // Private player As ZPlay
            player = new ZPlay();
            player.OpenFile(FileInGameData, TStreamFormat.sfOgg);
            player.StartPlayback();
        }
示例#10
0
        public void AdjustPlayerParams(ref ZPlay player)
        {
            player.SetPlayerVolume(50, 50);
            player.SetMasterVolume(100, 100);

            playerVolumeTrackBarEx.Value = 50;
            masterVolumeTrackBarEx.Value = 100;
            pitchTrackBarEx.Value        = 100;
            rateTrackBarEx.Value         = 100;
        }
示例#11
0
        private bool IsAudioTrackBeginningReached(ref ZPlay player)
        {
            int positionMilisec = Convert.ToInt32(GetPosition(ref player).ms);

            using (StreamWriter writer = File.AppendText(@"C:\Users\slava\Desktop\log.txt"))
            {
                writer.WriteLine($"{playbackProgressBarAdv.Value} : {playbackProgressBarAdv.Value <= 1000}");
            }
            return(playbackProgressBarAdv.Value <= 1000);
        }
示例#12
0
        protected override void OnClosing(CancelEventArgs e)
        {
            base.OnClosing(e);
            _timer?.Dispose();
            Player?.StopPlayback();
            Player?.Dispose();
            Player = null;

            (Owner as MainForm)?.SetSecondForm(null);
        }
示例#13
0
        private void _loadImformation(string filename)
        {
            IsEmpty = true;
            if (filename == string.Empty)
            {
                return;
            }
            FilePath = filename;
            #region 获取文件信息
            #region 设置文件时间
            ZPlay tempPlay = new ZPlay();
            //如果文件不存在,则退出构造..
            bool bret = tempPlay.OpenFile(filename, TStreamFormat.sfAutodetect);
            if (!bret)
            {
                return;
            }
            TStreamInfo streamInfo = new TStreamInfo();
            tempPlay.GetStreamInfo(ref streamInfo);
            Length  = streamInfo.Length;
            Minutes = streamInfo.Length.sec / 60;
            Seconds = streamInfo.Length.sec % 60;

            tempPlay.Close();
            #endregion
            #region 获取歌曲名
            string musicName = filename.Substring(filename.LastIndexOf('\\') + 1);
            MusicName = musicName.Substring(0, musicName.LastIndexOf('.'));
            #endregion
            #region 设置文件格式
            string format = filename.Substring(filename.LastIndexOf('.'));
            switch (format.ToLower())
            {
            case ".wav":
                Format = TStreamFormat.sfWav;
                break;

            case ".mp3":
                Format = TStreamFormat.sfMp3;
                break;

            case ".flac":
                Format = TStreamFormat.sfFLAC;
                break;

            default:
                Format = TStreamFormat.sfAutodetect;
                break;
            }
            #endregion
            IsEmpty = false;

            #endregion
        }
示例#14
0
        private void CheckMailbox(object sender, EventArgs args)
        {
            string incomingMessagesTranslationMode = incomingLangComboBox.Text;

            try
            {
                var result = _flowClientWorker.GetMessage(incomingMessagesTranslationMode);

                if (result.Success)
                {
                    if (incomingMessagesRichTextBox.InvokeRequired)
                    {
                        incomingMessagesRichTextBox.Invoke((MethodInvoker)(() =>
                        {
                            incomingMessagesRichTextBox.AppendText(
                                Environment.NewLine + new string('-', 168) +
                                Environment.NewLine +
                                $"From {result.SenderName} [{result.SenderId}] : {result.MessageBody}");
                        }));
                    }
                    else
                    {
                        incomingMessagesRichTextBox.AppendText(
                            Environment.NewLine + new string('-', 168) +
                            Environment.NewLine +
                            $"From {result.SenderName} [{result.SenderId}] : {result.MessageBody}");
                    }

                    try
                    {
                        ZPlay player = new ZPlay();

                        if (player.OpenFile(@"Resources/OwOw.mp3", TStreamFormat.sfAutodetect))
                        {
                            player.SetMasterVolume(100, 100);
                            player.SetPlayerVolume(100, 100);

                            player.StartPlayback();
                        }
                    }
                    catch (Exception)
                    {
                        // I don't care if soundplayer is going crazy
                    }
                }
            }
            catch (Exception exception)
            {
                Debug.WriteLine(exception);
                MessageBox.Show(string.IsNullOrWhiteSpace(exception.Message)
                    ? "Something is wrong: check your server connection"
                    : exception.Message);
            }
        }
示例#15
0
        static void Main(string[] args)
        {
            Console.WriteLine("Playing test.mp3. Press Q to quit.\n");
            // create ZPlay class
            ZPlay player = new ZPlay();

            // open file
            if (player.AddFile("1.mp3", TStreamFormat.sfAutodetect) == false)
            {
                Console.WriteLine(player.GetError());
                return;
            }


            // get song length
            TStreamInfo info = new TStreamInfo();

            player.GetStreamInfo(ref info);
            Console.WriteLine("Length: {0:G}:{1:G}:{2:G}:{3:G}",
                              info.Length.hms.hour,
                              info.Length.hms.minute,
                              info.Length.hms.second,
                              info.Length.hms.millisecond);

            // start playing
            player.StartPlayback();

            TStreamStatus status = new TStreamStatus();
            TStreamTime   time   = new TStreamTime();

            status.fPlay = true;

            while (status.fPlay)
            {
                player.GetPosition(ref time);
                Console.Write("Pos: {0:G}:{1:G}:{2:G}:{3:G}\r",
                              time.hms.hour,
                              time.hms.minute,
                              time.hms.second,
                              time.hms.millisecond);
                player.GetStatus(ref status);
                System.Threading.Thread.Sleep(50);
                if (Console.KeyAvailable)
                {
                    var cki = Console.ReadKey(true);
                    if (cki.Key == ConsoleKey.Q)
                    {
                        player.StopPlayback();
                    }
                }
            }
        }
示例#16
0
        private void UpdateProgressBar(ref ZPlay player)
        {
            int positionMilisec = Convert.ToInt32(GetPosition(ref player).ms);

            if (playbackProgressBarAdv.Maximum >= positionMilisec)
            {
                playbackProgressBarAdv.Value = positionMilisec;
            }

            if (IsAudioTrackEndReached(ref player))
            {
                NormalizeMetronomeToggleButton(ref player);
                _metronomePlayer?.StopPlayback();
            }
        }
示例#17
0
        void MainFormLoad(object sender, EventArgs e)
        {
            gPlayer = new ZPlay();
            if (Directory.Exists(gAwazyol) == false)
            {
                gAwazyol = Application.StartupPath;
            }
            textBox1.MaxLength = 0;
            DirectoryInfo di = new DirectoryInfo(gAwazyol);

            foreach (DirectoryInfo dir in di.GetDirectories())
            {
                cmbQisquchlar.Items.Add(dir.Name);
            }
            cmbQisquchlar.SelectedIndex = 0;
        }
示例#18
0
 public RadioDeskEcho(RadioDeskPlayer ply)
 {
     this.libzply_obj  = (ZPlay)ply.GetType().GetField("player", BindingFlags.Instance | BindingFlags.NonPublic).GetValue((object)ply);
     this.t_echoeffect = new TEchoEffect[2];
     this.t_echoeffect[0].nLeftDelay       = 2000;
     this.t_echoeffect[0].nLeftSrcVolume   = 50;
     this.t_echoeffect[0].nLeftEchoVolume  = 30;
     this.t_echoeffect[0].nRightDelay      = 2000;
     this.t_echoeffect[0].nRightSrcVolume  = 50;
     this.t_echoeffect[0].nRightEchoVolume = 30;
     this.t_echoeffect[1].nLeftDelay       = 30;
     this.t_echoeffect[1].nLeftSrcVolume   = 50;
     this.t_echoeffect[1].nLeftEchoVolume  = 30;
     this.t_echoeffect[1].nRightDelay      = 30;
     this.t_echoeffect[1].nRightSrcVolume  = 50;
     this.t_echoeffect[1].nRightEchoVolume = 30;
 }
示例#19
0
        //private void NormalizeReversePlaybackToggleButton(ref ZPlay player)
        //{
        //    if (IsAudioTrackBeginningReached(ref player) && _isReverseModeSwitch)
        //    {
        //        if (reversePlaybackToggleButton.InvokeRequired)
        //            reversePlaybackToggleButton.Invoke((MethodInvoker)(() =>
        //               reversePlaybackToggleButton.SwitchState()));
        //        else
        //            reversePlaybackToggleButton.SwitchState();

        //        _isReverseModeSwitch = false;
        //    }

        //}

        private void NormalizeMetronomeToggleButton(ref ZPlay player)
        {
            if (IsAudioTrackEndReached(ref player) && _isMetronomeSwitch)
            {
                if (metronomeToggleButton.InvokeRequired)
                {
                    metronomeToggleButton.Invoke((MethodInvoker)(() =>
                                                                 metronomeToggleButton.SwitchState()));
                }
                else
                {
                    metronomeToggleButton.SwitchState();
                }

                _isMetronomeSwitch = false;
            }
        }
 public RadioDeskEqualizer(RadioDeskPlayer ply)
 {
     this.libzply_obj = (ZPlay)ply.GetType().GetField("player", BindingFlags.Instance | BindingFlags.NonPublic).GetValue((object)ply);
     int[] FreqPointArray = new int[10]
     {
         60,
         170,
         310,
         600,
         1000,
         3000,
         6000,
         12000,
         14000,
         16000
     };
     if (!this.libzply_obj.SetEqualizerPoints(ref FreqPointArray, 10))
     {
         throw new MediaPlaybackException(this.libzply_obj.GetError());
     }
 }
示例#21
0
        void PlayNews()
        {
            String _newsurl = "http://public.npr.org/anon.npr-podcasts/podcast/500005/376418824/npr_376418824.mp3?dl=1";


            WebClient Client = new WebClient();

            Client.DownloadFile(_newsurl, "nprnews.mp3");

            //System.Diagnostics.ProcessStartInfo thePSI = new System.Diagnostics.ProcessStartInfo("wmplayer");
            //thePSI.Arguments = _newsurl;
            //thePSI.CreateNoWindow = true;
            //thePSI.UseShellExecute = true;
            //System.Diagnostics.Process.Start(thePSI);


            #endregion

            #region "MP3Player"
            ZPlay player = new ZPlay();
            if (player.OpenFile("nprnews.mp3", TStreamFormat.sfAutodetect) == false)
            {
                // error
                System.Windows.Forms.MessageBox.Show("can't do it");

                //Windows 8.1 Way
                //var dialog = new MessageDialog("Are you sure?");
                //dialog.Title = "Really?";
                //dialog.Commands.Add(new UICommand { Label = "Ok", Id = 0 });
                //dialog.Commands.Add(new UICommand { Label = "Cancel", Id = 1 });
                //var res = await dialog.ShowAsync();
            }
            //TODO announce how long the file is
            //TODO convert to direct stream of the mp3 file from the source, needs to create a memory
            //stream in order to stream file.  LoadDynamicInfo and StreamLength should be possible
            else
            {
                player.StartPlayback();
            }
        }
示例#22
0
        private void OpenAudioFile(ref ZPlay player)
        {
            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.Filter = Resources.FileFilters;

                if (openFileDialog.ShowDialog() == DialogResult.OK) // Test result.
                {
                    try
                    {
                        player?.StopPlayback();
                        _isPaused  = false;
                        _isPlaying = false;

                        if (player == null)
                        {
                            player = new ZPlay();
                        }

                        if (player.OpenFile(openFileDialog.FileName, TStreamFormat.sfAutodetect) == false)
                        {
                            MessageBox.Show($@"ERROR {this.Player.GetError()}");
                            return;
                        }

                        AdjustPlayerParams(ref player);
                        SetProgressBar(ref player);
                        ResetToggleButtons(ref player);
                    }
                    catch (IOException exception)
                    {
                        Console.WriteLine(exception.StackTrace);
                        throw;
                    }
                }
            }
        }
示例#23
0
        private void UpdateProgressBar(ref ZPlay player)
        {
            int positionMilisec = Convert.ToInt32(GetPosition(ref player).ms);

            if (playbackProgressBarAdv.Maximum >= positionMilisec)
            {
                playbackProgressBarAdv.Value = positionMilisec;
            }

            if (IsAudioTrackEndReached(ref player))
            {
                NormalizeMetronomeToggleButton(ref player);
                //NormalizeReversePlaybackToggleButton(ref player);

                //if (metronomeToggleButton.InvokeRequired)
                //    metronomeToggleButton.Invoke((MethodInvoker) (() =>
                //        _metronomePlayer?.StopPlayback()));
                //else
                //{
                //    _metronomePlayer?.StopPlayback();
                //}
                _metronomePlayer?.StopPlayback();
            }
        }
示例#24
0
		private void Form1_Load(object sender, System.EventArgs e)
		{
			player = new ZPlay();
			ReverseMode = false;
			Echo = false;

			int left = 0;
			int right = 0;
			player.GetMasterVolume(ref left, ref right);
			leftmastervolume.Value = 100 - left;
			rightmastervolume.Value = 100 - right;
			player.GetPlayerVolume(ref left, ref right);
			leftplayervolume.Value = 100 - left;
			rightplayervolume.Value = 100 - right;

			// callback
			CallbackFunc = new TCallbackFunc(MyCallbackFunc);
            player.SetCallbackFunc(CallbackFunc, (TCallbackMessage)((TCallbackMessage.MsgEnterVolumeSlideAsync | TCallbackMessage.MsgExitVolumeSlideAsync | TCallbackMessage.MsgStreamBufferDoneAsync | TCallbackMessage.MsgNextSongAsync )), 0);

         
			// echo

            
			TEchoEffect[] effect = new TEchoEffect[2];

			effect[0].nLeftDelay = 500;
			effect[0].nLeftSrcVolume = 50;
			effect[0].nLeftEchoVolume = 30;
			effect[0].nRightDelay = 500;
			effect[0].nRightSrcVolume = 50;
			effect[0].nRightEchoVolume = 30;

			effect[1].nLeftDelay = 30;
			effect[1].nLeftSrcVolume = 50;
			effect[1].nLeftEchoVolume = 30;
			effect[1].nRightDelay = 30;
			effect[1].nRightSrcVolume = 50;
			effect[1].nRightEchoVolume = 30;

            player.SetEchoParam(ref effect, 2);
  
            
            /*
            TEchoEffect[] test1 = new TEchoEffect[2];
            int n = player.GetEchoParam(ref test1);
            int i;
            for (i = 0; i < n; i++)
            {
                MessageBox.Show(test1[i].nLeftDelay.ToString());
            }
            */

            /*
            int[] EqPoints = new int[9] { 100, 200, 300, 1000, 2000, 3000, 5000, 7000, 12000 };
            player.SetEqualizerPoints(ref EqPoints, 9);
            */

            /*
            int[] testeq = new int[1];
            int num = player.GetEqualizerPoints(ref testeq);
            int i1;
            for (i1 = 0; i1 < num; i1++)
            {
                MessageBox.Show(testeq[i1].ToString ());

            }
             */
            

            /*
            TWaveOutInfo WaveOutInfo = new TWaveOutInfo();
            int WaveOutNum = player.EnumerateWaveOut();
            uint i;
            for (i = 0; i < WaveOutNum; i++)
            {
                if (player.GetWaveOutInfo(i, ref WaveOutInfo))
                {
                    MessageBox.Show(WaveOutInfo.ProductName );

                }
            }
            
            */


			ComboBox1.SelectedIndex = 0;
			ComboBox2.SelectedIndex = 7;
			ComboBox3.SelectedIndex = 11;

            ComboBox4.SelectedIndex = 0;
            ComboBox5.SelectedIndex = 0;

			if (My.MyApplication.Application.CommandLineArgs.Count != 0)
			{

				player.Close();

				if (LoadMode == 0)
				{
                    if (!(player.OpenFile(My.MyApplication.Application.CommandLineArgs[0], TStreamFormat.sfAutodetect)))
					{
						MessageBox.Show(player.GetError(), string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Error);
					}
				}

				showinfo();
                player.StartPlayback();
			}

		}
示例#25
0
 public RadioDeskFFTGraph(RadioDeskPlayer ply)
 {
     this.zply_obj = (ZPlay)ply.GetType().GetField("player", BindingFlags.Instance | BindingFlags.NonPublic).GetValue((object)ply);
 }
 public RadioDeskClipPlayer()
 {
     this.player        = new ZPlay();
     this.stream_status = new TStreamStatus();
 }
示例#27
0
 private CVoicePlayer()
 {
     m_currentPlayer = new ZPlay();
 }
示例#28
0
        private void RegisterControlsEvents()
        {
            #region Menu Buttons

            loadAudioFileButtonAdv.Click += (sender, args) => OpenAudioFile(ref Player);

            //secondLoadAudioFileButtonAdv.Click +=
            //    (sender, args) =>
            //    {
            //        OpenAudioFile(secondAxWindowsMediaPlayer, ref _secondAudioFilePath);
            //        this.Height = 600;
            //        secondAxWindowsMediaPlayer.Location = new Point(
            //            firstAxWindowsMediaPlayer.Left,
            //            secondAxWindowsMediaPlayer.Top
            //        );
            //    };

            #endregion

            pitchTrackBarEx.MouseUp += (sender, args) =>
            {
                int pitchValue = ((TrackBarEx)sender).Value;
                pitchNumericUpDown.Value = pitchValue >= 10 ? pitchValue : 10;
            };

            pitchNumericUpDown.ValueChanged += (sender, args) =>
            {
                int pitchValue = (int)((NumericUpDown)sender).Value;
                pitchTrackBarEx.Value = pitchValue;

                Player?.SetPitch(pitchValue);
            };


            // freeeeeeeeeeeee

            frequencyTrackBarEx.MouseUp += (sender, args) =>
            {
                int pitchValue = ((TrackBarEx)sender).Value;
                frequencyNumericUpDown.Value = pitchValue >= 20 ? pitchValue : 20;
            };

            frequencyNumericUpDown.ValueChanged += (sender, args) =>
            {
                int pitchValue = (int)((NumericUpDown)sender).Value;
                frequencyTrackBarEx.Value = pitchValue;

                _metronomePlayer?.SetPitch(pitchValue);
            };

            // periooooooooooooooo

            periodicityTrackBarEx.MouseUp += (sender, args) =>
            {
                int tempoValue = ((TrackBarEx)sender).Value;
                //periodicityTextBox.Text = $@"{BpmToPeriodicity(tempoValue >= 20 ? tempoValue : 20)}";
                periodicityTextBox.Text =
                    $@"{BpmToPeriodicity(periodicityTrackBarEx.Maximum - tempoValue + periodicityTrackBarEx.Minimum)}";
            };

            periodicityTextBox.TextChanged += (sender, args) =>
            {
                decimal periodicityValue = decimal.Parse(periodicityTextBox.Text);
                periodicityTrackBarEx.Value = periodicityTrackBarEx.Maximum - PeriodicityToBPM(periodicityValue) +
                                              periodicityTrackBarEx.Minimum;

                _metronomePlayer?.SetTempo(periodicityTrackBarEx.Maximum - periodicityTrackBarEx.Value +
                                           periodicityTrackBarEx.Minimum);
            };


            //rateTrackBarEx.Click += (sender, args) =>
            //{
            //    int rateValue = ((TrackBarEx)sender).Value;
            //    Player?.SetTempo(rateValue);
            //};

            tempoTrackBarEx.MouseUp += (sender, args) =>
            {
                int tempoValue = ((TrackBarEx)sender).Value;
                tempoNumericUpDown.Value = tempoValue >= 10 ? tempoValue : 10;
            };

            tempoNumericUpDown.ValueChanged += (sender, args) =>
            {
                int tempoValue = (int)((NumericUpDown)sender).Value;
                tempoTrackBarEx.Value = tempoValue;

                Player?.SetTempo(tempoValue);
            };

            reversePlaybackToggleButton.ToggleStateChanged += (sender, args) =>
            {
                if (Player == null)
                {
                    return;
                }

                ToggleButton self = (ToggleButton)sender;

                if (self.ToggleState == ToggleButtonState.Active)
                {
                    Player?.ReverseMode(true);
                }
                else
                {
                    // ToggleButtonState.Inactive
                    Player?.ReverseMode(false);
                }
            };

            playbackProgressBarAdv.MouseDown += (sender, args) =>
            {
                //if (args.Button != MouseButtons.Left)
                //    return;

                TStreamTime newPosition = new TStreamTime();
                TStreamInfo info        = GetStreamInfo(ref Player);

                newPosition.ms = Convert.ToUInt32(
                    args.X * info.Length.ms / Convert.ToDouble(((ProgressBarAdv)sender).Size.Width));


                Player?.Seek(TTimeFormat.tfMillisecond, ref newPosition, TSeekMethod.smFromBeginning);
            };

            _volumeRadialMenuSlider.SliderValueChanged += (sender, args) =>
            {
                int volumeLevel = (int)((RadialMenuSlider)sender).SliderValue;

                if (FFTPictureBox.InvokeRequired)
                {
                    FFTPictureBox.Invoke((MethodInvoker)(() => { Player?.SetPlayerVolume(volumeLevel, volumeLevel); }));
                }
                else
                {
                    Player?.SetPlayerVolume(volumeLevel, volumeLevel);
                }
            };

            volumePictureBox.Click += (sender, args) =>
            {
                _radialMenu = new RadialMenu();

                #region Volume Radial Menu Slider

                _volumeRadialMenuSlider.MinimumValue = 0;
                _volumeRadialMenuSlider.MaximumValue = 100;
                _volumeRadialMenuSlider.SliderValue  = 50;
                _volumeRadialMenuSlider.Text         = "VOLUME";

                #endregion

                #region Radial Menu Properties Settings

                _radialMenu.WedgeCount = 1;

                _radialMenu.MenuIcon =
                    Image.FromFile($@"{Path.GetDirectoryName(Application.ExecutablePath)}\Icons\Volume-high-icon.png");

                _radialMenu.MenuVisibility       = true;
                _radialMenu.PersistPreviousState = true;
                _radialMenu.UseIndexBasedOrder   = true;

                _radialMenu.RadialMenuSliderDrillDown(_volumeRadialMenuSlider);

                #region TRASH

                //_radialMenu.Items.Add(_volumeRadialMenuSlider);
                //_radialMenu.Icon = Image
                //    .FromFile($@"{Path.GetDirectoryName(Application.ExecutablePath)}\Icons\arrow-back-icon.png");


                //ImageCollection ic = new ImageCollection();
                //ic.Add(Image.FromFile($@"{Path.GetDirectoryName(Application.ExecutablePath)}\Icons\arrow-back-icon.png"));

                //_radialMenu.ImageCollection = ic;

                //_radialMenu.DisplayStyle = DisplayStyle.TextAboveImage;
                //ImageList imageList = new ImageList();
                //string[] files = Directory.GetFiles($@"{Path.GetDirectoryName(Application.ExecutablePath)}\Icons");

                //foreach (string file in files)
                //{
                //    imageList.Images.Add("volume", Image.FromFile(file));
                //}

                //_radialMenu.ImageList = ImageListAdv.FromImageList(imageList);

                #endregion

                #endregion

                #region Show Radial Menu

                this.Controls.Add(_radialMenu);
                _radialMenu.ShowRadialMenu();
                //_radialMenu.HidePopup();
                //_radialMenu.ShowPopup(new Point());

                #endregion

                _radialMenu.PreviousLevelOpened += (radialMenuSender, opening) => _radialMenu.Dispose();

                // Emulate mouse click on 50% Volume on _volumeRadialMenuSlider
                // because there's a library bug that cannot update value
                // by .SliderValue property as it's meant to be updated.
                Point location = MousePosition;
                LeftMouseClick(location.X - 40, location.Y + 15);
            };


            FFTPictureBox.Paint += (sender, args) =>
            {
                IntPtr MyDeviceContext = default(IntPtr);
                MyDeviceContext = args.Graphics.GetHdc();
                Player?.DrawFFTGraphOnHDC(MyDeviceContext, 0, 0, FFTPictureBox.Width, FFTPictureBox.Height);
                args.Graphics.ReleaseHdc(MyDeviceContext);
            };

            playToggleButton.ToggleStateChanged += (sender, args) =>
            {
                if (Player == null)
                {
                    return;
                }

                if (playToggleButton.ToggleState == ToggleButtonState.Active)
                {
                    Player.StartPlayback();
                    //_timer.Start();
                    return;
                }
                else
                {
                    Player.StopPlayback(); // ToggleButtonState.Inactive
                    //_timer.Stop();
                }
            };

            metronomeToggleButton.ToggleStateChanged += (sender, args) =>
            {
                if (metronomeToggleButton.ToggleState == ToggleButtonState.Active)
                {
                    if (_metronomePlayer == null)
                    {
                        _metronomePlayer = new ZPlay();
                    }

                    if (_metronomePlayer.OpenFile(@"Resources\metronom.mp3", TStreamFormat.sfAutodetect) == false)
                    {
                        MessageBox.Show($@"ERROR {_metronomePlayer.GetError()}");
                        return;
                    }

                    _metronomePlayer.StartPlayback();

                    _metronomePlayer.SetMasterVolume(100, 100);
                    _metronomePlayer.SetPlayerVolume(100, 100);

                    _isMetronomeSwitch = true;
                }
                else
                {
                    _metronomePlayer.StopPlayback(); // ToggleButtonState.Inactive
                    _isMetronomeSwitch = false;
                }
            };

            playerVolumeTrackBarEx.Scroll += (sender, args) =>
            {
                int volumeLevel = ((TrackBarEx)sender).Value;
                Player?.SetPlayerVolume(volumeLevel, volumeLevel);
            };

            masterVolumeTrackBarEx.Scroll += (sender, args) =>
            {
                int volumeLevel = ((TrackBarEx)sender).Value;
                Player?.SetMasterVolume(volumeLevel, volumeLevel);
            };

            this.MouseDown += (sender, mouseEventArgs) =>
            {
                if (mouseEventArgs.Button == MouseButtons.Left)
                {
                    ReleaseCapture();
                    SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
                }
            };

            closePictureBox.Click += (sender, args) => this.Close();

            #region _secondForm Control Buttons

            ReplayPictureBox.Click      += OnReplayPictureBoxOnClick;
            PlayResumePictureBox.Click  += OnPlayResumePictureBoxOnClick;
            PausePictureBox.Click       += OnPausePictureBoxOnClick;
            StopPictureBox.Click        += OnStopPictureBoxOnClick;
            RewindPictureBox.Click      += OnRewindPictureBoxOnClick;
            FastForwardPictureBox.Click += OnFastForwardPictureBoxOnClick;

            #endregion
        }
示例#29
0
 private void Init()
 {
     _zPlayer      = new ZPlay();
     _callbackFunc = new TCallbackFunc(MyCallbackFunc);
     _zPlayer.SetCallbackFunc(_callbackFunc, TCallbackMessage.MsgStop, 0);
 }
示例#30
0
        public void Run()
        {
            zPlayBuffer   = new CircularBlockBuffer();
            zPlay         = new ZPlay();
            netConnection = new NetConnection();
            netConnection.OnDisconnect += new NC_OnDisconnect(OnDisconnect);
            netConnection.OnTick       += new NC_OnTick(NC_OnTick);
            try
            {
                int result = -1;
                // This is to connect to default vod app
                netConnection.Connect(new ServerLink("rtmp://localhost:1935/vod"), new NC_ResultCallBackConnect((sender, success) =>
                {
                    // Runs in RTMP thread (NOT MainThread!!!)
                    Console.WriteLine("NetConnection.Connect => Success=" + success.ToString());

                    if (success)
                    {
                        result = 1;
                    }
                    else
                    {
                        result = 0;
                    }
                }));

                // Wait until we are connected (needed because we run async)
                while (result == -1)
                {
                    Thread.Sleep(100);
                } //while


                // Succes for connecting to rtmp server
                if (result == 1)
                {
                    NetStream netStream = new NetStream(netConnection);
                    netStream.OnStatus      += new NS_OnStatus(NS_OnStatus);
                    netStream.OnAudioPacket += new NC_OnMediaPacket(NC_OnMediaPacket);

                    netStream.WaitForValidStream_ID(4000); // wait max 4 seconds for the netstream to become valid (for real test connect to event)

                    // This is to get and MP3 stream
                    netStream.Play("Comfort_Fit_-_03_-_Sorry.mp3", 0, -1, true);
                }


                Console.WriteLine("Press enter to stop.");
                Console.ReadLine();
            }
            finally
            {
                // Cleanup
                if (netConnection != null)
                {
                    netConnection.Close();
                    netConnection = null;
                }
                if (zPlay != null)
                {
                    TStreamStatus status = new TStreamStatus();
                    zPlay.GetStatus(ref status);
                    if (status.fPlay)
                    {
                        zPlay.StopPlayback();
                    }

                    zPlay.Close();
                    zPlay = null;
                }
                if (zPlayBuffer != null)
                {
                    zPlayBuffer = null;
                }
            }
        }