1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-19 14:17:41 +02:00

Add Envelope script

This commit is contained in:
James Crook 2018-02-17 16:08:38 +00:00 committed by Paul Licameli
parent 43da4995a6
commit ab99b7d6c1
5 changed files with 77 additions and 1 deletions

View File

@ -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() )

View File

@ -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()

View File

@ -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;
};

View File

@ -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 ){

View File

@ -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;