Audio-vizualizer find next/prev silence shortcuts added

git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@868 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
niksedk 2011-12-30 18:03:18 +00:00
parent a34c906919
commit cbd6411ee5
6 changed files with 114 additions and 1 deletions

View File

@ -1100,7 +1100,69 @@ namespace Nikse.SubtitleEdit.Controls
Locked = !Locked;
Invalidate();
e.SuppressKeyPress = true;
}
}
public double FindDataBelowThresshold(int thresshold, double durationInSeconds)
{
int begin = SecondsToXPosition(_currentVideoPositionSeconds+1);
int length = SecondsToXPosition(durationInSeconds);
int hitCount = 0;
for (int i = begin; i < _wavePeaks.AllSamples.Count; i++)
{
if (i > 0 && i < _wavePeaks.AllSamples.Count && Math.Abs(_wavePeaks.AllSamples[i]) <= thresshold)
hitCount++;
else
hitCount = 0;
if (hitCount > length)
{
double seconds = ((i - (length / 2)) / (double)_wavePeaks.Header.SampleRate) / _zoomFactor;
if (seconds >= 0)
{
StartPositionSeconds = seconds;
if (StartPositionSeconds > 1)
StartPositionSeconds -= 1;
OnSingleClick.Invoke(seconds, null);
Invalidate();
}
return seconds;
}
}
return -1;
}
public double FindDataBelowThressholdBack(int thresshold, double durationInSeconds)
{
int begin = SecondsToXPosition(_currentVideoPositionSeconds-1);
int length = SecondsToXPosition(durationInSeconds);
int hitCount = 0;
for (int i = begin; i > 0; i--)
{
if (i > 0 && i < _wavePeaks.AllSamples.Count && Math.Abs(_wavePeaks.AllSamples[i]) <= thresshold)
hitCount++;
else
hitCount = 0;
if (hitCount > length)
{
double seconds = (i + (length / 2)) / (double)_wavePeaks.Header.SampleRate / _zoomFactor;
if (seconds >= 0)
{
StartPositionSeconds = seconds;
if (StartPositionSeconds > 1)
StartPositionSeconds -= 1;
else
StartPositionSeconds = 0;
OnSingleClick.Invoke(seconds, null);
Invalidate();
}
return seconds;
}
}
return -1;
}
public void ZoomIn()

View File

@ -122,6 +122,8 @@ namespace Nikse.SubtitleEdit.Forms
Keys _waveformZoomIn = Keys.None;
Keys _waveformZoomOut = Keys.None;
Keys _waveformPlaySelection = Keys.None;
Keys _waveformSearchSilenceForward = Keys.None;
Keys _waveformSearchSilenceBack = Keys.None;
bool _videoLoadedGoToSubPosAndPause = false;
bool _makeHistory = true;
string _cutText = string.Empty;
@ -6878,6 +6880,16 @@ namespace Nikse.SubtitleEdit.Forms
toolStripMenuItemWaveFormPlaySelection_Click(null, null);
e.SuppressKeyPress = true;
}
else if (audioVisualizer != null && audioVisualizer.Visible & e.KeyData == _waveformSearchSilenceForward)
{
audioVisualizer.FindDataBelowThresshold(Configuration.Settings.VideoControls.WaveformSeeksSilenceMaxVolume, Configuration.Settings.VideoControls.WaveformSeeksSilenceDurationSeconds);
e.SuppressKeyPress = true;
}
else if (audioVisualizer != null && audioVisualizer.Visible & e.KeyData == _waveformSearchSilenceBack)
{
audioVisualizer.FindDataBelowThressholdBack(Configuration.Settings.VideoControls.WaveformSeeksSilenceMaxVolume, Configuration.Settings.VideoControls.WaveformSeeksSilenceDurationSeconds);
e.SuppressKeyPress = true;
}
else if (_mainInsertBefore == e.KeyData && inListView)
{
InsertBefore();
@ -9608,6 +9620,9 @@ namespace Nikse.SubtitleEdit.Forms
_waveformVerticalZoom = Utilities.GetKeys(Configuration.Settings.Shortcuts.WaveformVerticalZoom);
_waveformZoomIn = Utilities.GetKeys(Configuration.Settings.Shortcuts.WaveformZoomIn);
_waveformZoomOut = Utilities.GetKeys(Configuration.Settings.Shortcuts.WaveformZoomOut);
_waveformPlaySelection = Utilities.GetKeys(Configuration.Settings.Shortcuts.WaveformPlaySelection);
_waveformSearchSilenceForward = Utilities.GetKeys(Configuration.Settings.Shortcuts.WaveformSearchSilenceForward);
_waveformSearchSilenceBack = Utilities.GetKeys(Configuration.Settings.Shortcuts.WaveformSearchSilenceBack);
}
private void LoadPlugins()

View File

@ -506,6 +506,10 @@ namespace Nikse.SubtitleEdit.Forms
audioVisualizerNode.Nodes.Add(Configuration.Settings.Language.WaveForm.ZoomOut + GetShortcutText(Configuration.Settings.Shortcuts.WaveformZoomOut));
if (!string.IsNullOrEmpty(Configuration.Settings.Language.Settings.VerticalZoom)) // TODO: Remove in SE 3.3
audioVisualizerNode.Nodes.Add(Configuration.Settings.Language.Settings.VerticalZoom + GetShortcutText(Configuration.Settings.Shortcuts.WaveformVerticalZoom));
if (!string.IsNullOrEmpty(Configuration.Settings.Language.Settings.WaveformSeekSilenceForward)) // TODO: Remove in SE 3.3
audioVisualizerNode.Nodes.Add(Configuration.Settings.Language.Settings.WaveformSeekSilenceForward + GetShortcutText(Configuration.Settings.Shortcuts.WaveformSearchSilenceForward));
if (!string.IsNullOrEmpty(Configuration.Settings.Language.Settings.WaveformSeekSilenceBack)) // TODO: Remove in SE 3.3
audioVisualizerNode.Nodes.Add(Configuration.Settings.Language.Settings.WaveformSeekSilenceBack + GetShortcutText(Configuration.Settings.Shortcuts.WaveformSearchSilenceBack));
audioVisualizerNode.Nodes.Add(Configuration.Settings.Language.WaveForm.PlaySelection + GetShortcutText(Configuration.Settings.Shortcuts.WaveformPlaySelection));
treeViewShortcuts.Nodes.Add(audioVisualizerNode);
@ -1012,7 +1016,10 @@ namespace Nikse.SubtitleEdit.Forms
Configuration.Settings.Shortcuts.WaveformPlaySelection = GetShortcut(node.Text);
else if (text == (Configuration.Settings.Language.Settings.VerticalZoom).Replace("&", string.Empty))
Configuration.Settings.Shortcuts.WaveformVerticalZoom = GetShortcut(node.Text);
else if (Configuration.Settings.Language.Settings.WaveformSeekSilenceForward != null && text == (Configuration.Settings.Language.Settings.WaveformSeekSilenceForward).Replace("&", string.Empty)) // SE 3.3
Configuration.Settings.Shortcuts.WaveformSearchSilenceForward = GetShortcut(node.Text);
else if (Configuration.Settings.Language.Settings.WaveformSeekSilenceBack != null && text == (Configuration.Settings.Language.Settings.WaveformSeekSilenceBack).Replace("&", string.Empty)) // SE 3.3
Configuration.Settings.Shortcuts.WaveformSearchSilenceBack = GetShortcut(node.Text);
}
}

View File

@ -1277,6 +1277,8 @@ can edit in same subtitle file (collaboration)",
GoToPrevious = "Go to prevoius line",
ToggleDialogueDashes = "Toogle dialogue dashes",
VerticalZoom = "Vertical zoom",
WaveformSeekSilenceForward = "Seek silence forward",
WaveformSeekSilenceBack = "Seek silence back",
GoBack100Milliseconds = "100 ms back",
GoForward100Milliseconds = "100 ms forward",
GoBack500Milliseconds = "500 ms back",

View File

@ -1206,6 +1206,8 @@
public string GoToPrevious { get; set; }
public string ToggleDialogueDashes { get; set; }
public string VerticalZoom { get; set; }
public string WaveformSeekSilenceForward { get; set; }
public string WaveformSeekSilenceBack { get; set; }
public string GoBack100Milliseconds { get; set; }
public string GoForward100Milliseconds { get; set; }
public string GoBack500Milliseconds { get; set; }

View File

@ -363,6 +363,8 @@ namespace Nikse.SubtitleEdit.Logic
public bool GenerateSpectrogram { get; set; }
public string SpectrogramAppearance { get; set; }
public int WaveFormMininumSampleRate { get; set; }
public double WaveformSeeksSilenceDurationSeconds { get; set; }
public int WaveformSeeksSilenceMaxVolume { get; set; }
public VideoControlsSettings()
{
@ -380,6 +382,8 @@ namespace Nikse.SubtitleEdit.Logic
WaveFormMouseWheelScrollUpIsForward = true;
SpectrogramAppearance = "OneColorGradient";
WaveFormMininumSampleRate = 126;
WaveformSeeksSilenceDurationSeconds = 0.3;
WaveformSeeksSilenceMaxVolume = 10;
}
}
@ -479,6 +483,9 @@ namespace Nikse.SubtitleEdit.Logic
public string WaveformZoomIn { get; set; }
public string WaveformZoomOut { get; set; }
public string WaveformPlaySelection { get; set; }
public string WaveformSearchSilenceForward { get; set; }
public string WaveformSearchSilenceBack { get; set; }
public Shortcuts()
{
@ -518,6 +525,8 @@ namespace Nikse.SubtitleEdit.Logic
MainInsertBefore = "Control+Shift+Ins";
WaveformVerticalZoom = string.Empty;
WaveformPlaySelection = string.Empty;
WaveformSearchSilenceForward = string.Empty;
WaveformSearchSilenceBack = string.Empty;
}
}
@ -1127,6 +1136,12 @@ namespace Nikse.SubtitleEdit.Logic
subNode = node.SelectSingleNode("WaveFormMininumSampleRate");
if (subNode != null)
settings.VideoControls.WaveFormMininumSampleRate = Convert.ToInt32(subNode.InnerText);
subNode = node.SelectSingleNode("WaveformSeeksSilenceDurationSeconds");
if (subNode != null)
settings.VideoControls.WaveformSeeksSilenceDurationSeconds = Convert.ToDouble(subNode.InnerText, System.Globalization.CultureInfo.InvariantCulture);
subNode = node.SelectSingleNode("WaveformSeeksSilenceMaxVolume");
if (subNode != null)
settings.VideoControls.WaveformSeeksSilenceMaxVolume = Convert.ToInt32(subNode.InnerText);
settings.NetworkSettings = new NetworkSettings();
node = doc.DocumentElement.SelectSingleNode("NetworkSettings");
@ -1330,6 +1345,12 @@ namespace Nikse.SubtitleEdit.Logic
subNode = node.SelectSingleNode("WaveformPlaySelection");
if (subNode != null)
settings.Shortcuts.WaveformPlaySelection = subNode.InnerText;
subNode = node.SelectSingleNode("WaveformSearchSilenceForward");
if (subNode != null)
settings.Shortcuts.WaveformSearchSilenceForward = subNode.InnerText;
subNode = node.SelectSingleNode("WaveformSearchSilenceBack");
if (subNode != null)
settings.Shortcuts.WaveformSearchSilenceBack = subNode.InnerText;
}
settings.RemoveTextForHearingImpaired = new RemoveTextForHearingImpairedSettings();
@ -1555,6 +1576,8 @@ namespace Nikse.SubtitleEdit.Logic
textWriter.WriteElementString("GenerateSpectrogram", settings.VideoControls.GenerateSpectrogram.ToString());
textWriter.WriteElementString("SpectrogramAppearance", settings.VideoControls.SpectrogramAppearance);
textWriter.WriteElementString("WaveFormMininumSampleRate", settings.VideoControls.WaveFormMininumSampleRate.ToString());
textWriter.WriteElementString("WaveformSeeksSilenceDurationSeconds", settings.VideoControls.WaveformSeeksSilenceDurationSeconds.ToString(System.Globalization.CultureInfo.InvariantCulture));
textWriter.WriteElementString("WaveformSeeksSilenceMaxVolume", settings.VideoControls.WaveformSeeksSilenceMaxVolume.ToString());
textWriter.WriteEndElement();
textWriter.WriteStartElement("NetworkSettings", "");
@ -1633,6 +1656,8 @@ namespace Nikse.SubtitleEdit.Logic
textWriter.WriteElementString("WaveformZoomIn", settings.Shortcuts.WaveformZoomIn);
textWriter.WriteElementString("WaveformZoomOut", settings.Shortcuts.WaveformZoomOut);
textWriter.WriteElementString("WaveformPlaySelection", settings.Shortcuts.WaveformPlaySelection);
textWriter.WriteElementString("WaveformSearchSilenceForward", settings.Shortcuts.WaveformSearchSilenceForward);
textWriter.WriteElementString("WaveformSearchSilenceBack", settings.Shortcuts.WaveformSearchSilenceBack);
textWriter.WriteEndElement();
textWriter.WriteStartElement("RemoveTextForHearingImpaired", "");