1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-27 17:48:38 +02:00

Merge branch 'master' into scrubbing

This commit is contained in:
Paul Licameli 2015-05-30 14:28:22 -04:00
commit d379012b77
7 changed files with 73 additions and 26 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)
@ -1792,25 +1804,24 @@ static float sumFreqValues(
// Helper function to decide on which color set to use.
// dashCount counts both dashes and the spaces between them.
AColor::ColorGradientChoice ChooseColorSet( float bin0, float bin1, float selBinLo,
float selBinCenter, float selBinHi, int dashCount )
float selBinCenter, float selBinHi, int dashCount, bool isSpectral )
{
if ( (selBinCenter >= 0) && (bin0 <= selBinCenter) && (selBinCenter < bin1) )
if (!isSpectral)
return AColor::ColorGradientTimeSelected;
if ((selBinCenter >= 0) && (bin0 <= selBinCenter) &&
(selBinCenter < bin1))
return AColor::ColorGradientEdge;
else if (
(0 == dashCount % 2) &&
if ((0 == dashCount % 2) &&
(((selBinLo >= 0) && (bin0 <= selBinLo) && ( selBinLo < bin1)) ||
((selBinHi >= 0) && (bin0 <= selBinHi) && ( selBinHi < bin1))))
return AColor::ColorGradientEdge;
else if (
(selBinLo < 0 || selBinLo < bin1) &&
(selBinHi < 0 || selBinHi > bin0) )
if ((selBinLo < 0 || selBinLo < bin1) && (selBinHi < 0 || selBinHi > bin0))
return AColor::ColorGradientTimeAndFrequencySelected;
else
return AColor::ColorGradientTimeSelected;
}
void TrackArtist::DrawClipSpectrum(WaveTrackCache &cache,
WaveClip *clip,
wxDC & dc,
@ -2098,7 +2109,9 @@ void TrackArtist::DrawClipSpectrum(WaveTrackCache &cache,
// If we are in the time selected range, then we may use a differnt color set.
if (ssel0 <= w0 && w1 < ssel1)
{
selected = ChooseColorSet( bin0, bin1, selBinLo, selBinCenter, selBinHi, x/DASH_LENGTH );
bool isSpectral = ((track->GetDisplay() == WaveTrack::SpectralSelectionDisplay) ||
(track->GetDisplay() == WaveTrack::SpectralSelectionLogDisplay));
selected = ChooseColorSet( bin0, bin1, selBinLo, selBinCenter, selBinHi, x/DASH_LENGTH, isSpectral );
}
@ -2210,7 +2223,9 @@ void TrackArtist::DrawClipSpectrum(WaveTrackCache &cache,
// If we are in the time selected range, then we may use a differnt color set.
if (ssel0 <= w0 && w1 < ssel1)
{
selected = ChooseColorSet( bin0, bin1, selBinLo, selBinCenter, selBinHi, x/DASH_LENGTH );
bool isSpectral = ((track->GetDisplay() == WaveTrack::SpectralSelectionDisplay) ||
(track->GetDisplay() == WaveTrack::SpectralSelectionLogDisplay));
selected = ChooseColorSet( bin0, bin1, selBinLo, selBinCenter, selBinHi, x/DASH_LENGTH, isSpectral );
}
if(!usePxCache) {

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, _("S&pectral Selection"));
/* i18n-hint: short form of 'logarithm'*/
mWaveTrackMenu->Append(OnSpectralSelLogID, _("Spectral Selection lo&g(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 --------------------