private void ShowSpeechTypeVariation(SpeechVisualizer visualizer, SpeechTypeSpecification speechTypeSpecification, double deltaTime) { double time = 0; double lastTime = speechTypeSpecification.TimeSpeechTypeTupleList.Last().Item1; visualizer.MarkerList = new List <SoundMarker>(); while (time < lastTime) { SoundMarker marker = new SoundMarker(); marker.Type = SoundMarkerType.HorizontalLine; marker.Thickness = 4; marker.Start = (float)(time - 0.25 * deltaTime); marker.End = (float)(time + 0.25 * deltaTime); SpeechType speechType = speechTypeSpecification.GetSpeechType(time); if (speechType == SpeechType.Silence) { marker.Color = Color.Yellow; marker.Level = 28000; } else if (speechType == SpeechType.Voiced) { marker.Color = Color.Lime; marker.Level = 32000; } else { marker.Color = Color.Red; marker.Level = 30000; } visualizer.MarkerList.Add(marker); time += deltaTime; } visualizer.Invalidate(); }
private void ShowPitchMarks(SpeechVisualizer visualizer, List <double> pitchMarkTimeList) { foreach (double pitchMarkTime in pitchMarkTimeList) { SoundMarker marker = new SoundMarker(); marker.Type = SoundMarkerType.VerticalLine; marker.Thickness = 2; marker.Start = -30000; marker.End = 30000; marker.Color = Color.Yellow; marker.Level = pitchMarkTime; visualizer.MarkerList.Add(marker); } visualizer.Invalidate(); }
protected void DrawMarker(Graphics g, SoundMarker marker) { using (Pen markerPen = new Pen(Color.Empty)) { markerPen.Color = marker.Color; markerPen.Width = marker.Thickness; if (marker.Type == SoundMarkerType.HorizontalLine) { float yPlot = GetSoundPlotYAtY(marker.Level); float xPlotStart = GetPlotXAtX(marker.Start); float xPlotEnd = GetPlotXAtX(marker.End); g.DrawLine(markerPen, xPlotStart, yPlot, xPlotEnd, yPlot); } else if (marker.Type == SoundMarkerType.VerticalLine) { float xPlot = GetPlotXAtX(marker.Level); float yPlotStart = GetSoundPlotYAtY(marker.Start); float yPlotEnd = GetSoundPlotYAtY(marker.End); g.DrawLine(markerPen, xPlot, yPlotStart, xPlot, yPlotEnd); } } }