From ab99b7d6c10bb6e2b0080249f19838ca1f5f274b Mon Sep 17 00:00:00 2001 From: James Crook Date: Sat, 17 Feb 2018 16:08:38 +0000 Subject: [PATCH] Add Envelope script --- scripts/piped-work/docimages_all.py | 1 + scripts/piped-work/docimages_envelopes.py | 45 +++++++++++++++++++++++ src/commands/SetEnvelopeCommand.cpp | 2 +- src/commands/SetTrackInfoCommand.cpp | 28 ++++++++++++++ src/commands/SetTrackInfoCommand.h | 2 + 5 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 scripts/piped-work/docimages_envelopes.py diff --git a/scripts/piped-work/docimages_all.py b/scripts/piped-work/docimages_all.py index 1178c2b1b..8d6ad1c70 100644 --- a/scripts/piped-work/docimages_all.py +++ b/scripts/piped-work/docimages_all.py @@ -10,3 +10,4 @@ exec( open("docimages_tracks.py" ).read() ) exec( open("docimages_labels.py" ).read() ) exec( open("docimages_spectro.py" ).read() ) exec( open("docimages_after.py" ).read() ) +exec( open("docimages_envelopes.py" ).read() ) diff --git a/scripts/piped-work/docimages_envelopes.py b/scripts/piped-work/docimages_envelopes.py new file mode 100644 index 000000000..41963f30e --- /dev/null +++ b/scripts/piped-work/docimages_envelopes.py @@ -0,0 +1,45 @@ +# docimages_envelopes.py +# Sends commands to get images for the manual. +# Images for envelope manipulation. + +# Make sure Audacity is running first and that mod-script-pipe is enabled +# before running this script. + +#load and run the common core. +exec( open("docimages_core.py" ).read() ) + + + +def env_images() : + loadMonoTracks(1) + do( 'Select: Start=0 End=0') + # A mono track + capture( 'Envelope001.png', 'All_Tracks' ) + do( 'EnvelopeTool' ) + # As spectrogram. + capture( 'Envelope002.png', 'All_Tracks' ) + do( 'SetEnvelope: Time=55 Value=0.9'); + capture( 'Envelope003.png', 'All_Tracks' ) + do( 'SetEnvelope: Time=120 Value=0.4'); + capture( 'Envelope004.png', 'All_Tracks' ) + do( 'SetEnvelope: Time=125 Value=0.9'); + capture( 'Envelope005.png', 'All_Tracks' ) + do( 'SetEnvelope: Time=45 Value=0.85'); + capture( 'Envelope006.png', 'All_Tracks' ) + do( 'SetEnvelope: Time=25 Value=1.85'); + capture( 'Envelope007.png', 'All_Tracks' ) + do( 'SetEnvelope: Time=0 Value=0.85'); + capture( 'Envelope008.png', 'All_Tracks' ) + do( 'SetTrack: VZoom=Times2' ) + capture( 'Envelope009.png', 'All_Tracks' ) + do( 'SetTrack: VZoom=HalfWave' ) + capture( 'Envelope010.png', 'All_Tracks' ) + do( 'SelectTool' ) + capture( 'Envelope011.png', 'All_Tracks' ) + do( 'SetTrack: VZoom=Reset' ) + capture( 'Envelope012.png', 'All_Tracks' ) + + + +env_images() + diff --git a/src/commands/SetEnvelopeCommand.cpp b/src/commands/SetEnvelopeCommand.cpp index 8dc649d40..cd020cf52 100644 --- a/src/commands/SetEnvelopeCommand.cpp +++ b/src/commands/SetEnvelopeCommand.cpp @@ -34,7 +34,7 @@ bool SetEnvelopeCommand::DefineParams( ShuttleParams & S ){ S.OptionalY( bHasTrackIndex ).Define( mTrackIndex, wxT("Track"), 0, 0, 100 ); S.OptionalN( bHasChannelIndex ).Define( mChannelIndex, wxT("Channel"), 0, 0, 100 ); S.OptionalY( bHasT ).Define( mT, wxT("Time"), 0.0, 0.0, 100000.0); - S.OptionalY( bHasV ).Define( mV, wxT("Value"), 0.0, 0.0, 2.0); + S.OptionalY( bHasV ).Define( mV, wxT("Value"), 1.0, 0.0, 2.0); S.OptionalN( bHasDelete ).Define( mbDelete, wxT("Delete"), false ); return true; }; diff --git a/src/commands/SetTrackInfoCommand.cpp b/src/commands/SetTrackInfoCommand.cpp index 78806e02f..63f2f1ea0 100644 --- a/src/commands/SetTrackInfoCommand.cpp +++ b/src/commands/SetTrackInfoCommand.cpp @@ -77,10 +77,27 @@ static const wxString kScaleTypeStrings[nScaleTypes] = }; +enum kZoomTypes +{ + kReset, + kTimes2, + kHalfWave, + nZoomTypes +}; + +static const wxString kZoomTypeStrings[nZoomTypes] = +{ + XO("Reset"), + XO("Times2"), + XO("HalfWave"), +}; + + bool SetTrackCommand::DefineParams( ShuttleParams & S ){ wxArrayString colours( nColours, kColourStrings ); wxArrayString displays( nDisplayTypes, kDisplayTypeStrings ); wxArrayString scales( nScaleTypes, kScaleTypeStrings ); + wxArrayString vzooms( nZoomTypes, kZoomTypeStrings ); S.OptionalY( bHasTrackIndex ).Define( mTrackIndex, wxT("Track"), 0, 0, 100 ); S.OptionalN( bHasChannelIndex ).Define( mChannelIndex, wxT("Channel"), 0, 0, 100 ); @@ -91,6 +108,7 @@ bool SetTrackCommand::DefineParams( ShuttleParams & S ){ S.OptionalN( bHasDisplayType ).DefineEnum( mDisplayType, wxT("Display"), kWaveform, displays ); S.OptionalN( bHasScaleType ).DefineEnum( mScaleType, wxT("Scale"), kLinear, scales ); S.OptionalN( bHasColour ).DefineEnum( mColour, wxT("Color"), kColour0, colours ); + S.OptionalN( bHasVZoom ).DefineEnum( mVZoom, wxT("VZoom"), kReset, vzooms ); S.OptionalN( bHasSpectralSelect ).Define( bSpectralSelect, wxT("SpectralSel"),true ); S.OptionalN( bHasGrayScale ).Define( bGrayScale, wxT("GrayScale"), false ); // There is also a select command. This is an alternative. @@ -106,6 +124,7 @@ void SetTrackCommand::PopulateOrExchange(ShuttleGui & S) wxArrayString colours( nColours, kColourStrings ); wxArrayString displays( nDisplayTypes, kDisplayTypeStrings ); wxArrayString scales( nScaleTypes, kScaleTypeStrings ); + wxArrayString vzooms( nZoomTypes, kZoomTypeStrings ); S.AddSpace(0, 5); @@ -120,6 +139,7 @@ void SetTrackCommand::PopulateOrExchange(ShuttleGui & S) S.Optional( bHasColour ).TieChoice( _("Colour:"), mColour, &colours ); S.Optional( bHasDisplayType ).TieChoice( _("Display:"), mDisplayType, &displays ); S.Optional( bHasScaleType ).TieChoice( _("Scale:"), mScaleType, &scales ); + S.Optional( bHasVZoom ).TieChoice( _("VZoom:"), mVZoom, &vzooms ); } S.EndMultiColumn(); S.StartMultiColumn(2, wxALIGN_CENTER); @@ -181,6 +201,14 @@ bool SetTrackCommand::Apply(const CommandContext & context) wt->GetSpectrogramSettings().spectralSelection = bSpectralSelect; if( wt && bHasGrayScale ) wt->GetSpectrogramSettings().isGrayscale = bGrayScale; + if( wt && bHasVZoom ){ + switch( mVZoom ){ + default: + case kReset: wt->SetDisplayBounds(-1,1); break; + case kTimes2: wt->SetDisplayBounds(-2,2); break; + case kHalfWave: wt->SetDisplayBounds(0,1); break; + } + } // These ones don't make sense on the second channel of a stereo track. if( !bIsSecondChannel ){ diff --git a/src/commands/SetTrackInfoCommand.h b/src/commands/SetTrackInfoCommand.h index 29ffb2e27..61076b94c 100644 --- a/src/commands/SetTrackInfoCommand.h +++ b/src/commands/SetTrackInfoCommand.h @@ -47,6 +47,7 @@ public: int mHeight; int mDisplayType; int mScaleType; + int mVZoom; bool bSpectralSelect; bool bGrayScale; bool bSelected; @@ -64,6 +65,7 @@ public: bool bHasHeight; bool bHasDisplayType; bool bHasScaleType; + bool bHasVZoom; bool bHasSpectralSelect; bool bHasGrayScale; bool bHasSelected;