1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-09-18 09:00:52 +02:00

Select Spectral Edit from Track DropDown

This commit is contained in:
James Crook 2015-05-18 21:58:04 +01:00 committed by Steve Daulton
parent 9f1a7d8e90
commit 88a9e434f5
6 changed files with 56 additions and 12 deletions

View File

@ -4756,7 +4756,11 @@ void AudacityProject::DoNextPeakFrequency(bool up)
WaveTrack *const wt = static_cast<WaveTrack*>(t);
const int display = wt->GetDisplay();
if (display == WaveTrack::SpectrumDisplay ||
display == WaveTrack::SpectrumLogDisplay) {
display == WaveTrack::SpectrumLogDisplay ||
display == WaveTrack::SpectralSelectionDisplay ||
display == WaveTrack::SpectralSelectionLogDisplay
) {
pTrack = wt;
break;
}

View File

@ -438,6 +438,12 @@ void TrackArtist::DrawTrack(const Track * t,
case WaveTrack::SpectrumLogDisplay:
DrawSpectrum(wt, dc, r, viewInfo, false, true);
break;
case WaveTrack::SpectralSelectionDisplay:
DrawSpectrum(wt, dc, r, viewInfo, false, false);
break;
case WaveTrack::SpectralSelectionLogDisplay:
DrawSpectrum(wt, dc, r, viewInfo, false, true);
break;
case WaveTrack::PitchDisplay:
DrawSpectrum(wt, dc, r, viewInfo, true, false);
break;
@ -763,7 +769,10 @@ void TrackArtist::UpdateVRuler(Track *t, wxRect & r)
vruler->SetLabelEdges(true);
vruler->SetLog(false);
}
else if (display == WaveTrack::SpectrumDisplay) {
else if (
(display == WaveTrack::SpectrumDisplay) ||
(display == WaveTrack::SpectralSelectionDisplay) )
{
// Spectrum
if (r.height < 60)
@ -806,7 +815,10 @@ void TrackArtist::UpdateVRuler(Track *t, wxRect & r)
}
vruler->SetLog(false);
}
else if (display == WaveTrack::SpectrumLogDisplay) {
else if (
(display == WaveTrack::SpectrumLogDisplay) ||
(display == WaveTrack::SpectralSelectionLogDisplay) )
{
// SpectrumLog
if (r.height < 10)

View File

@ -322,6 +322,8 @@ enum {
OnWaveformDBID,
OnSpectrumID,
OnSpectrumLogID,
OnSpectralSelID,
OnSpectralSelLogID,
OnPitchID,
OnSplitStereoID,
@ -720,6 +722,11 @@ void TrackPanel::BuildMenus(void)
mWaveTrackMenu->Append(OnSpectrumID, _("&Spectrogram"));
/* i18n-hint: short form of 'logarithm'*/
mWaveTrackMenu->Append(OnSpectrumLogID, _("Spectrogram l&og(f)"));
/* i18n-hint: Spectral Selection is spectrogram with ability to select frequencies too'*/
mWaveTrackMenu->Append(OnSpectralSelID, _("Spectral Selection"));
/* i18n-hint: short form of 'logarithm'*/
mWaveTrackMenu->Append(OnSpectralSelLogID, _("Spectral Selection l&og(f)"));
mWaveTrackMenu->Append(OnPitchID, _("Pitc&h (EAC)"));
mWaveTrackMenu->AppendSeparator();
mWaveTrackMenu->AppendRadioItem(OnChannelMonoID, _("&Mono"));
@ -1721,8 +1728,7 @@ void TrackPanel::SetCursorAndTipWhenInLabel( Track * t,
{
if (event.m_x >= GetVRulerOffset() &&
(t->GetKind() == Track::Wave) &&
(((WaveTrack *) t)->GetDisplay() <= WaveTrack::SpectrumDisplay ||
((WaveTrack *) t)->GetDisplay() <= WaveTrack::SpectrumLogDisplay))
( ((WaveTrack *) t)->GetDisplay() <= WaveTrack::SpectralSelectionLogDisplay) )
{
*ppTip = _("Click to vertically zoom in. Shift-click to zoom out. Drag to specify a zoom region.");
SetCursor(event.ShiftDown()? *mZoomOutCursor : *mZoomInCursor);
@ -1796,15 +1802,17 @@ void TrackPanel::SetCursorAndTipWhenInLabelTrack( LabelTrack * pLT,
namespace {
// This returns true if we're a spectral editing track.
inline bool isSpectrogramTrack(const Track *pTrack, bool *pLogf = NULL) {
if (pTrack &&
pTrack->GetKind() == Track::Wave) {
const int display =
static_cast<const WaveTrack*>(pTrack)->GetDisplay();
const bool logF = (display == WaveTrack::SpectrumLogDisplay);
const bool logF = (display == WaveTrack::SpectrumLogDisplay) ||
(display == WaveTrack::SpectralSelectionLogDisplay);
if (pLogf)
*pLogf = logF;
return logF || (display == WaveTrack::SpectrumDisplay);
return (display == WaveTrack::SpectralSelectionLogDisplay) || (display == WaveTrack::SpectralSelectionDisplay);
}
else {
if (pLogf)
@ -3083,7 +3091,9 @@ void TrackPanel::ExtendFreqSelection(int mouseYCoordinate, int trackTopEdge,
const WaveTrack* wt = mFreqSelTrack;
const int display = wt->GetDisplay();
const bool logF = display == WaveTrack::SpectrumLogDisplay;
const bool logF = (display == WaveTrack::SpectrumLogDisplay) ||
(display == WaveTrack::SpectralSelectionLogDisplay)
;
const double rate = wt->GetRate();
const double frequency =
PositionToFrequency(true, mouseYCoordinate,
@ -4566,7 +4576,7 @@ void TrackPanel::HandleVZoomClick( wxMouseEvent & event )
// don't do anything if track is not wave or Spectrum/log Spectrum
if (((mCapturedTrack->GetKind() == Track::Wave) &&
(((WaveTrack*)mCapturedTrack)->GetDisplay() <= WaveTrack::SpectrumLogDisplay))
(((WaveTrack*)mCapturedTrack)->GetDisplay() <= WaveTrack::SpectralSelectionLogDisplay))
#ifdef USE_MIDI
|| mCapturedTrack->GetKind() == Track::Note
#endif
@ -4655,8 +4665,11 @@ void TrackPanel::HandleVZoomButtonUp( wxMouseEvent & event )
int fftSkipPoints=0;
#endif //EXPERIMENTAL_FFT_SKIP_POINTS
double rate = ((WaveTrack *)track)->GetRate();
spectrum = ((WaveTrack *) track)->GetDisplay() == WaveTrack::SpectrumDisplay;
spectrumLog=(((WaveTrack *) track)->GetDisplay() == WaveTrack::SpectrumLogDisplay);
spectrum = (((WaveTrack *) track)->GetDisplay() == WaveTrack::SpectrumDisplay) ||
(((WaveTrack *) track)->GetDisplay() == WaveTrack::SpectralSelectionDisplay) ;
spectrumLog=(((WaveTrack *) track)->GetDisplay() == WaveTrack::SpectrumLogDisplay) ||
(((WaveTrack *) track)->GetDisplay() == WaveTrack::SpectralSelectionLogDisplay)
;
if(spectrum) {
min = mTrackArtist->GetSpectrumMinFreq(0);
if(min < 0)
@ -8457,6 +8470,8 @@ void TrackPanel::OnTrackMenu(Track *t)
display != WaveTrack::WaveformDBDisplay);
theMenu->Enable(OnSpectrumID, display != WaveTrack::SpectrumDisplay);
theMenu->Enable(OnSpectrumLogID, display != WaveTrack::SpectrumLogDisplay);
theMenu->Enable(OnSpectralSelID, display != WaveTrack::SpectralSelectionDisplay);
theMenu->Enable(OnSpectralSelLogID, display != WaveTrack::SpectralSelectionLogDisplay);
theMenu->Enable(OnPitchID, display != WaveTrack::PitchDisplay);
WaveTrack * track = (WaveTrack *)t;

View File

@ -409,6 +409,8 @@ class AUDACITY_DLL_API WaveTrack: public Track {
WaveformDBDisplay,
SpectrumDisplay,
SpectrumLogDisplay,
SpectralSelectionDisplay,
SpectralSelectionLogDisplay,
PitchDisplay,
NoDisplay // Preview track has no display
} WaveTrackDisplay;
@ -417,6 +419,10 @@ class AUDACITY_DLL_API WaveTrack: public Track {
if(mDisplay<2)
mLastDisplay=mDisplay; // remember last display mode for wave and wavedb so they can remap
mDisplay = display;
if( mDisplay == SpectralSelectionDisplay ){
}
if( mDisplay == SpectralSelectionLogDisplay ){
}
}
int GetDisplay() const {return mDisplay;}
int GetLastDisplay() {return mLastDisplay;}

View File

@ -780,6 +780,8 @@ bool NyquistEffect::ProcessOne()
case WaveTrack::WaveformDBDisplay: view = wxT("\"Waveform (dB)\""); break;
case WaveTrack::SpectrumDisplay: view = wxT("\"Spectrogram\""); break;
case WaveTrack::SpectrumLogDisplay: view = wxT("\"Spectrogram log(f)\""); break;
case WaveTrack::SpectralSelectionDisplay: view = wxT("\"Spectral Selection\""); break;
case WaveTrack::SpectralSelectionLogDisplay: view = wxT("\"Spectral Selection log(f)\""); break;
case WaveTrack::PitchDisplay: view = wxT("\"Pitch (EAC)\""); break;
default: view = wxT("NIL"); break;
}

View File

@ -48,17 +48,22 @@ void TracksPrefs::Populate()
mSoloChoices.Add(_("None"));
// Keep the same order as in TrackPanel.cpp menu: OnWaveformID, OnWaveformDBID, OnSpectrumID, OnSpectrumLogID, OnPitchID
// Keep the same order as in TrackPanel.cpp menu: OnWaveformID, OnWaveformDBID, OnSpectrumID, OnSpectrumLogID,
// OnSpectralSelID, OnSpectralSelLogID, OnPitchID
mViewCodes.Add(0);
mViewCodes.Add(1);
mViewCodes.Add(2);
mViewCodes.Add(3);
mViewCodes.Add(4);
mViewCodes.Add(5);
mViewCodes.Add(6);
mViewChoices.Add(_("Waveform"));
mViewChoices.Add(_("Waveform (dB)"));
mViewChoices.Add(_("Spectrogram"));
mViewChoices.Add(_("Spectrogram log(f)"));
mViewChoices.Add(_("Spectral Selection"));
mViewChoices.Add(_("Spectrogram Selection log(f)"));
mViewChoices.Add(_("Pitch (EAC)"));
//------------------------- Main section --------------------