Choreoh.MainWindow.sre_PreSpeechRecognized_Start_Recognized C# (CSharp) Method

sre_PreSpeechRecognized_Start_Recognized() private method

private sre_PreSpeechRecognized_Start_Recognized ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
return void
        private void sre_PreSpeechRecognized_Start_Recognized(object sender, EventArgs e)
        {
            mainCanvas.MouseUp -= new MouseButtonEventHandler(sre_PreSpeechRecognized_Start_Recognized);
            int startOfSegment = 0;
            //start_label.Visibility = Visibility.Visible;
            blackBack.Visibility = Visibility.Collapsed;
            beforeRecordCanvas.Visibility = Visibility.Collapsed;
            pre_recording = false;

            showRecordingCanvas();
            switchModeToRecording();

            double duration = endSecondsIntoWaveform - startSecondsIntoWaveform;

            TimeSpan startTime = new TimeSpan(0, 0, (int)startSecondsIntoWaveform);
            TimeSpan durationTime = new TimeSpan((int)(duration * 1000000000 / 100));

            Debug.WriteLine("Start Time: " + startTime.ToString());
            Debug.WriteLine("Duration Time: " + durationTime.ToString());

            var waveformTicker = new DispatcherTimer();
            waveformTicker.Tick += new EventHandler((object localsender, EventArgs locale) =>
            {
                if (waveform.isPlaying())
                {
                    Debug.WriteLine("waveform is playing, so tick");
                    waveform.movePlay();
                }
                else
                {
                    Debug.WriteLine("waveform stopped playing, so stop ticking");
                    (localsender as DispatcherTimer).Stop();
                }
            });
            double secondsPerPixel = 1 / waveform.getPixelsPerSecond();
            double nanoseconds = secondsPerPixel * 1000000000;
            int ticks = (int)nanoseconds / 100;
            Debug.WriteLine("Ticks: " + ticks);
            waveformTicker.Interval = new TimeSpan(ticks);

            var recordingTimer = new DispatcherTimer();
            recordingTimer.Tick += new EventHandler((object localsender, EventArgs locale) =>
            {
                waveform.endPlay();
                waveformTicker.Stop();
                StopRecording();

                post_recording = true;

                mainCanvas.MouseUp += new MouseButtonEventHandler(sre_PostSpeechRecognized_Save_Recognized);
                blackBack.Visibility = Visibility.Visible;
                afterRecordCanvas.Visibility = Visibility.Visible;
                hideMode();
                renderSegment(startOfSegment);

                (localsender as DispatcherTimer).Stop();
            });
            recordingTimer.Interval = durationTime;

            AudioPlay.playForDuration(mainCanvas, songFilename, startTime, durationTime);
            waveformTicker.Start();
            waveform.startPlay();
            startOfSegment = (int)(startTime.TotalSeconds * 30);
            DanceSegment segment = routine.addDanceSegment(startOfSegment);
            StartRecording(segment);
            recordingTimer.Start();

            return;
        }