This script by JETDV has been very helpful to me, its main function is to copy velocity envelopes. But now, I want to change its function to "copy volume envelopes" so I need your help in scripting knowledge here, or maybe someone has this type of script already. I have Vegasaur but I do not know if it have this functionality.
Edit: Sorry edited my post, I want to change it to be able to 'copy volume envelopes'
/** * Copy Velocity Envelope Nodes * * Written By: Edward Troxel * www.jetdv.com/tts * Modified: 03-31-2004 * Copyright 2004 - JET Digital Video * www.jetdv.com/tts **/ import System; import System.IO; import System.Windows.Forms; import ScriptPortal.Vegas; try { /*STUNNIX-OBFUS-ENCODED-BEGIN*/ var evnt = FindSelectedEvent(); if (null == evnt) throw "no selected event"; var vevnt : VideoEvent = VideoEvent(evnt); // Find the velocity envelope var VelEnv : Envelope = FindVEEnvelope(vevnt, EnvelopeType.Velocity); if (null == VelEnv) throw "no velocity envelope"; // Get the existing points in the selection area var EnvPts = VelEnv.Points; var cPts = VelEnv.Points.Count; var ii, arcount; var arTC = new Array(cPts); var arY = new Array(cPts); var FirstInArea : Timecode = Vegas.SelectionStart + Vegas.SelectionLength; arcount = 0; for (ii=0; ii < cPts; ii++) { arTC[arcount] = EnvPts[ii].X; arY[arcount] = EnvPts[ii].Y * 100; if (EnvPts[ii].X < FirstInArea) FirstInArea = EnvPts[ii].X; arcount++; } // Now locate the next event evnt.Selected = false; evnt = FindSelectedEvent(); if (null == evnt) throw "no selected 'TO' event"; vevnt = VideoEvent(evnt); // Find the velocity envelope VelEnv = FindVEEnvelope(vevnt, EnvelopeType.Velocity); if (null == VelEnv) { VelEnv = new Envelope(EnvelopeType.Velocity); vevnt.Envelopes.Add(VelEnv); } // Set each point in the series for (ii=0; ii < arcount; ii++) { var BasePoint : Timecode = new Timecode(0); var NewPoint : Timecode = (BasePoint + (arTC[ii] - FirstInArea + evnt.Start) ); SetVelocityPoint(NewPoint, arY[ii]); } /*STUNNIX-OBFUS-ENCODED-END*/ } catch (e) { MessageBox.Show(e); } function FindSelectedEvent() : TrackEvent { var trackEnum = new Enumerator(Vegas.Project.Tracks); while (!trackEnum.atEnd()) { var track : Track = Track(trackEnum.item()); var eventEnum = new Enumerator(track.Events); while (!eventEnum.atEnd()) { var evnt : TrackEvent = TrackEvent(eventEnum.item()); if (evnt.Selected) { return evnt; } eventEnum.moveNext(); } trackEnum.moveNext(); } return null; } function FindVEEnvelope(mevnt : VideoEvent, etype : EnvelopeType) : Envelope { var envEnum : Enumerator = new Enumerator(mevnt.Envelopes); while (!envEnum.atEnd()) { var env : Envelope = envEnum.item(); if (env.Type == etype) { return env; } envEnum.moveNext(); } return null; } function SetVelocityPoint(markLoc, markLabel) { /*STUNNIX-OBFUS-ENCODED-BEGIN*/ var PointSpeed = parseFloat(markLabel) / 100; var trackEnum = new Enumerator(Vegas.Project.Tracks); while (!trackEnum.atEnd()) { var track : Track = Track(trackEnum.item()); if (track.IsVideo()) { var eventEnum = new Enumerator(track.Events); while (!eventEnum.atEnd()) { var evnt : TrackEvent = TrackEvent(eventEnum.item()); if (evnt.Selected) { if ((evnt.Start.ToMilliseconds() < markLoc.ToMilliseconds()) & ((evnt.Start.ToMilliseconds() + evnt.Length.ToMilliseconds()) > (markLoc.ToMilliseconds()))) { var vevnt : VideoEvent = VideoEvent(evnt); // Find the velocity envelope - add if needed var VelEnv : Envelope = FindVEEnvelope(vevnt, EnvelopeType.Velocity); if (null == VelEnv) { VelEnv = new Envelope(EnvelopeType.Velocity); vevnt.Envelopes.Add(VelEnv); } var PointLoc : Timecode = markLoc - evnt.Start; var a : EnvelopePoint = VelEnv.Points.GetPointAtX(PointLoc); if (a == null) { a = new EnvelopePoint(PointLoc, PointSpeed); VelEnv.Points.Add(a); } else { a.Y = PointSpeed; } } } eventEnum.moveNext(); } } trackEnum.moveNext(); } /*STUNNIX-OBFUS-ENCODED-END*/ }