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