mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 22:42:38 +01:00
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:
parent
a34c906919
commit
cbd6411ee5
@ -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()
|
||||
|
@ -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()
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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",
|
||||
|
@ -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; }
|
||||
|
@ -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", "");
|
||||
|
Loading…
Reference in New Issue
Block a user