add bld_prepare.sh options of debian and ubuntu testing
[goodguy/cin-manual-latex.git] / parts / Keyframes.tex
1 \chapter{Keyframes}%
2 \label{cha:keyframes}
3 \index{keyframes}
4
5 The word \textit{keyframe} has at least 3 contextual meanings in the NLE environment.  First, the oldest meaning, is the \textit{I-Frame} definition used in codecs algorithms.  These are \textit{key} frames that begin a new sequence of pictures (GOP= Group Of Pictures), and are anchor points for repositioning (seeks) \index{seek}.  Next are the automation parameter data points.  These are usually input to primitive math forms, like translation and zoom.  And last are blobs of data that are chunks of parameters to plugins that can do almost anything.  The data can be a simple value, like a fader value, or more complex like a group of points and colors in a sketcher plugin keyframe.  The word keyframe has changed a lot in meaning.  In the context of \CGG{}, keyframes are data values that have been associated to media on the timeline which affect the media presentation.  So a keyframe no longer refers to a frame, but to a position on the timeline (timecode).
6
7 In \CGG{}, there are two general types of keyframe data,
8 \textit{automation keyframes} (autos) which are drawn as colored
9 lines and box icons overlayed at a point on a media track, and
10 \textit{plugin keyframes} which are drawn as gold key symbols on a
11 plugin bar of a
12 track. \includegraphics[height=\baselineskip]{auto.png} Auto
13 $\leftarrow$ Keyframe $\rightarrow$ Plugin
14 \includegraphics[height=\baselineskip]{plugin.png}
15
16 \section{Automation Keyframes /\,Autos}%
17 \label{sec:automation_keyframes_autos}
18 \index{keyframes!autos}
19
20 The \textit{autos} are created by clicking on an \textit{automation curve} to establish the time position for the new keyframe anchor point.  The basic nature of these simple auto values make them primitive operations that are easy to apply when needed.
21
22 There are many automation curve types, and most are not normally visible or clickable.  To make them visible, use the \texttt{View} pulldown, or open the \texttt{Window $\rightarrow$ Show Overlays} \index{show ovelays window}. This window allows toggling of the parameters in the \textit{View} pulldown but is more convenient because you can leave the window up to change values quickly.  If all of the automation curves are turned on, the timeline will be quite cluttered, and so usually only the parameters of interest are enabled during use.  When keyframes are selected, they are drawn on the timeline over the tracks to which they apply.  The keyframe is represented on the timeline as a little square on the curve, for example as in fade, or as a symbol as in a mask.  This square, timeline attachment point, can be used for positioning by clicking on a keyframe anchor and using drag and drop to set the new position.
23
24 The automation keyframes include:
25
26 mute/play audio; camera translation x,y and zoom; projector translation x,y and zoom; fade blending; audio panning; overlay mode; mask point sets and sampling speed.
27
28 Except for the mask auto, the values are all simple numbers.  Mute is different from the other autos in that it is simply a toggle of either on or off.  Mute keyframes determine where the track is processed but not rendered to the output.  An example usage would be to use auto keyframes to fade in a clip by setting the transparency to $100\%$ at the first keyframe and adding another keyframe 5 seconds later in the timeline with a transparency of $0\%$.
29
30 The \textit{Keyframes} pulldown on the main timeline is used for Cut, Copy, Paste, Clear, Change to linear, Change to smooth, Create curve type of Smooth, Linear, Tangent, or Disjoint, Copy default keyframe or Paste default keyframe.  If you right click on a curve keyframe on the timeline, a set of options popup including the choices \textit{keyframe type} (such as Fade, Speed, etc.), Hide keyframe type, Delete keyframe, Copy keyframe, smooth curve, linear segments, tangent edit, or disjoint edit.
31
32 Usually, the use of the keyframe values are more pleasing when the data varies smoothly between keyframe anchors on the timeline.  This is useful in many cases that are familiar, like a video fade in/out, or audio pan between channels.  To make the auto value change smoothly as the media is played, the keyframes auto values are points on curves that are created according to the design of the effect.  Most of the primitive types can create anchor points on curves that are piecewise linear, smooth, sloped, or broken at the keyframe anchor points.
33
34 Curve smoothing is called \textit{interpolation} and it uses keyframe point values and control values that determine how the curve will react at the time the media is played or rendered.  Interpolation uses 2 keyframes to create a set of intermediates which are used as active values between the \textit{previous} and \textit{next} keyframe anchors on the timeline.  The way the intermediate data is generated depends on the type of curve used to invent these values.  \CGG{} interpolates the intermediate values making the change happen smoothly and gradually over time.  The simple linear mathematical formula for interpolation is:   $a\times(1-t) + b\times t$    where $0\le t\le 1$ uniformly.
35
36 \section{Using Autos}%
37 \label{sec:using_autos}
38
39 The first click on the curve, creates a keyframe which you can click drag on to reposition.  The second click at a later position, generates the smoothing by creating a smooth ramp.  Ctrl-dragging on a keyframe round control point handle \index{control point handle} changes the value of either the input control or the output control.  This affects the sharpness of the curve.  While the input control and the output control can be moved horizontally as well as vertically, the horizontal movement is only for legibility and is not used in the curve value.  When you Shift-drag on a timeline curve, the keyframe snaps to the value of either the next or previous keyframe, depending on which exists.  It will snap up or down depending on direction of movement.  This lets you set a constant curve value without having to copy the next or previous keyframe.
40
41 To make it easier to navigate curve keyframes, since there is not much room on the timeline for a wide range of curve values, you need to zoom the curves in and out vertically to have any variability.  This is done by 2 tools: the automation fit button, Alt-f, and automation zoom \index{zoom!panel} menu which is seen at the bottom of the main window (figure~\ref{fig:automation}). The automation fit button scales and offsets the vertical range so the selected curve area appears in the timeline.  If a region of the timeline is highlighted by the cursor, only that region is scaled.  In/out points do not affect the zoomed region.  The automation zoom menu manually changes the vertical scaling of the curves in multiples of 2.  Click on its tumbler to change the zoom.  Alt$-\uparrow$ and Alt$-\downarrow$ change the automation zoom from the keyboard.
42
43 \begin{figure}[htpb]
44     \centering
45     \includegraphics[width=0.7\linewidth]{automation.png}
46     \caption{Automation Audio Fade menu with tumbler}
47     \label{fig:automation}
48 \end{figure}
49
50 Other mouse actions have the following effects:
51
52 \begin{itemize}
53     \item Double left mouse click on a curve Fade or Speed line will create ganged keyframes so that there is a
54     keyframe on each of the tracks in the exact same position.
55     \item Left mouse click on a keyframe position will show the numerical value in a colored tooltip-like box.
56     \item Right mouse click on the curve type line will bring up the option of \textit{Hide keyframe type}.   This
57     provides the same functionality as disabling the keyframe type in the \textit{View} pulldown menu.  Often it
58     helps to use this in order to be able to see other things on the timeline once it gets cluttered.
59     \item Fade and speed allow for setting a specific value for the keyframe using the following:
60     \begin{enumerate}
61         \item click using the right mouse button on one of the auto speed keyframes on the timeline;
62         \item a popup menu comes up with speed or fade auto type as the first menu item;
63         \item click on speed or fade and a colored slider bar will appear (default speed = orange; fade = pink);
64         \item click the slider, press and hold the left mouse button and move the slider to update the value or
65         simply type in a value in the textbox followed by pressing the Enter key or click the checkmark;
66         \item a tooltip shows the keyframe value;
67         \item release the button, the slider will be deleted from the canvas, and the value will be updated.
68     \end{enumerate}
69 \end{itemize}
70
71 You can click mouse button 3 on a keyframe box \index{keyframes!MMB options} and a menu pops up with the first menu item showing the keyframe type.  The top menu item can be activated for immediate access to update the automation keyframe value.  Some keyframe types, which have values that can be manipulated in another way than by dragging the color coded line, now show up with a different colored background to make them more visible.  Keep in mind that Zoombar \index{zoom!panel} ranges/values must be set to appropriate values when working with specific keyframe types, such as Fade or Speed.  If you do not see the auto line in the visible area of the video track, try the key combination Alt-f or select the speed in the \textit{Automation Type} drop-down menu at the bottom of the main window.  To the right of this field is \textit{Automation Range} where you can set the display ratio of these lines. Simply change the values until the lines are visible again.
72
73 Figure~\ref{fig:overlays1} and figure~\ref{fig:fade} shows several color coded lines for different key\-fra\-mes and specifically the slider bar for the Fade keyframe.  It is in the same color as the color coded keyframe type line which is the same color which would be shown in the \textit{Show overlays} window figure~\ref{fig:overlays_window}.
74
75 \begin{figure}[htpb]
76     \centering
77     \includegraphics[width=0.8\linewidth]{fade.png}
78     \caption{Fade curve with pink colored box Keyframe and Slider bar}
79     \label{fig:fade}
80 \end{figure}
81
82 In the \textit{Editing} section of \texttt{Settings $\rightarrow$ Preferences, Interface} tab there is \textit{Keyframe reticle} \index{keyframes!reticle} with options of Never, Dragging, or Always.  This is used to help in checking edit alignment across tracks.  (A reticle is a sighting line used to line up visual items, like cross hairs in a eyepiece.)  The appearance and function of sighting lines can be changed when dragging auto keyframes.  To see the effect, create some fader autos and drag a few to see the reticles drawn --- you will see something similar to the next screencast (figure~\ref{fig:always}).  \textit{Always} renders a line over all plugins, and \textit{dragging} only over the drag icon. \textit{Never} draws nothing.  The default is \textit{dragging}.
83
84 \begin{figure}[htpb]
85     \centering
86     \includegraphics[width=0.8\linewidth]{always.png}
87     \caption{Fade Auto with \textit{Always} set for easy to see numeric values}
88     \label{fig:always}
89 \end{figure}
90
91 \begin{wrapfigure}[9]{O}{0.5\linewidth}
92     \vspace{-2ex}
93     \centering
94     \includegraphics[width=0.79\linewidth]{controls.png}
95     \caption{Fade Auto with Controls}
96     \label{fig:controls}
97 \end{wrapfigure}
98
99 Control points allow for setting the slope of auto curves and then
100 subsequently adjusting that slope (figure~\ref{fig:controls}) \index{control point handle}.  To modify a current keyframe
101 you just right mouse it and change to either Tangent or Disjoint edit.
102 In the screencast to the right, the Fade Auto has pink colored curves and control points are seen as dashed lines next to the keyframe box with black filled circles on each end of the line.  Use the Ctrl key with the left mouse button to modify the control point lines.
103
104 \section{Speed\,/\,Fade Automation Usage and Auto Gang}%
105 \label{sec:speed_fade_automation_gang}
106 \index{keyframes!auto gang}
107
108 Speed automation resamples the data at a higher or lower playback rate. Speed automation can operate
109 on all tracks of the same type, either video or audio, with a single click; or all tracks, both video and
110 audio, with a double click. The curves to be affected must be both armed and ganged in the track
111 patchbays to be included in the operation. You can see the advantage of having different media types
112 ganged the same so that they will remain synchronized.  However, if as recommended you have Settings of \textit{Align cursor on frames} set, video will always snap to a frame, whereas audio does not.  Because the smallest pieces are audio and not video, when video is present in order to maintain synchronization be sure to do the double click on the video track.  The single/double click feature also works in the same manner for Fade Automation.
113
114 The conversion algorithms that calculate the duration are approximate, not exact.   Speed is not checked when inserting media on a track that already has speed adjustments so duration will not be corrected in that case.  You can not do negative time and you can not play backwards.  When working with edits and the speed auto, if you make a \textit{cut} in a section, the speed curve values should not change over the remaining playable edits.  It is
115 possible to easily add \textit{disjoint} curve points at the boundaries of the edit to preserve the curve shape.
116
117 Steps to demonstrate Auto Gang of Speed/Fade on all of the audio and video tracks are listed below:
118
119 \begin{enumerate}
120     \item Use the pulldown menu \textit{View} on the main canvas and ensure that there is a checkmark left of the Speed or Fade selection.
121     \item Double click and hold button 1 on any point of the Speed line on any track of the main track canvas and drag the handle where you want it, then release button 1.
122     \item Note how all video and audio boxes move together simultaneously for synchronization.
123     \item You can adjust the sampling rate (speed/fade) at any time by doing the same single/double
124     click on a keyframe.
125     \item To move the location left or right, hold down button 1 while moving it back and forth.
126     \item Use the status bar in the lower left hand corner to see position and playback rate.
127 \end{enumerate}
128
129 Releasing button 1 ends the current dragging operation, but single clicking on a speed/fade keyframe handle again will restart the drag operation on tracks of the same type.  Double clicking will select all armed tracks which have handles in the exact same cursor position.  It is sometimes difficult to get the desired value for the speed and it may take a few tries to get to the desired endpoint, but you can use an auto slider bar to get better control for more precision.  This is not ganged so you will have to do this on each track to achieve the same value.
130
131 An easy way to get an exact position is to set the \textit{Automation range} in the bottom bar of the main
132 window to the low and high ends of the desired range. For example, 1.000 to 50.000, which makes it
133 so you can drag the speed/fade handle all the way to the left for 1.000 or all the way to the right for 50.
134
135 Figure~\ref{fig:always} shows orange keyframes and lines for the ganged speed automation on all video/audio tracks. The figure shows the orange speed slider bar triangle with the current value displayed via the tooltip. Note the status bar numbers in the lower lefthand corner displaying 01:08 seconds as the location and 2.05 as the playback rate.
136
137 \begin{figure}[htpb]
138     \centering
139     \includegraphics[width=0.8\linewidth]{speed.png}
140     \caption{Ganged Speed Auto on all tracks and Speed auto with orange Slider bar}
141     \label{fig:speed}
142 \end{figure}
143
144 One other helpful item is a small colored indicator in the zoombar \textit{Automation Type} box when you have clicked on an auto line.  It will be the same color as that line so you can easily see out of the corner of your eye what that line refers to.  This is especially useful for the Camera and Projector X,Y,Z lines which are often right on top of each other.  In addition the status bar will have the colored indicator to the left of the last auto value when that status is visible.
145
146 \section{Bump autos}%
147 \label{sec:bump_autos}
148 \index{keyframes!bump autos}
149
150 Bump autos are a kind of floating point keyframe that differs from the rest
151 of the floating autos, like smooth and linear, in that they have two values:
152
153 \qquad a left edge and a right edge value.
154
155 The presence of a \textit{bump} creates boundaries
156 to regions on the timeline.  The region begins at that bump, and extends to
157 the next bump auto.  If the bump \textit{span} toggle is set, then adjusting the
158 left/right edge value will raise or lower all of the auto values in the
159 bump region.  For example, if you put a speed bump in at 1.0 secs and
160 another at 2.0 secs on the timeline, and adjust the right edge of the first auto to
161 speed 3.0, then the first region of playback (between 0.0 and 1.0 secs) will
162 play at normal speed, the next region (between the speed bumps) will play
163 at 3x, and the last region (after the 2.0, which moved to 1.333 after speed up)
164 will play at normal speed (figure~\ref{fig:bump-autos-04}).
165
166 \begin{figure}[htpb]
167         \centering
168         \includegraphics[width=0.6\linewidth]{bump-autos-04.png}
169         \caption{range from left keyframe to right keyframe}
170         \label{fig:bump-autos-04}
171 \end{figure}
172
173 Adjusting the \textit{bump} edge values when \textit{span} is on modifies all of the keyframes between edges of bumps, or to the beginning or end of media if there are no bumps to end the bump region.  Turn \textit{span} off if you only want to change the edge value without modifying the region values.
174
175 \paragraph{Technical Insight:} The \textit{bump} is a kind of FloatAuto, an element in an automation list that is one of the 12 automation types of keyframe lists:
176
177 \qquad \textit{mute, cam\_x,y,z, proj\_x,y,z fade, pan, mode, mask, speed}
178
179 which are part of the Track.  A FloatAuto is one of 4 auto \textit{value} types
180 that are stored in the auto at the keyframe position: \texttt{float, mask, int,
181 pan}.
182
183 A FloatAuto stores a floating value for the automation at a position on
184 the track.  When a FloatAuto \texttt{get\_value} is invoked at a track position, the
185 position is used to access a previous and next auto list element values
186 based on the \textit{current} position.  The returned value is generated using
187 one of 5 modes of curve interpolation: smooth, linear, tangent, disjoint, bump.
188
189 When a FloatAuto is created, it gets a list default value.  This varies
190 by auto type speed=0, fade=100, ..., and at position 0, but this is almost
191 always immediately changed to a value specified for the current position,
192 a value/mode you specify in the sliders and drag values of the GUI updates.
193
194 The best way to create bump keyframes is highlight a region and then:
195
196 \texttt{Keyframes $\rightarrow$ Create curve type $\rightarrow$ bump}
197
198 \texttt{Keyframes $\rightarrow$ Create keyframes $\rightarrow$ speed} (or other)
199
200 \begin{figure}[htpb]
201         \centering
202         \includegraphics[width=1.0\linewidth]{bump-autos-01.png}
203         \caption{Bump autos creation}
204         \label{fig:bump-autos-01}
205 \end{figure}
206
207 However, you can also create them by clicking or double-clicking on the curve, then:
208
209 \texttt{RMB $\rightarrow$ bump}
210
211 \texttt{RMB $\rightarrow$ speed} (or other)
212
213 Make sure that the keyframes at the edges are bump type, span is active and that the left edge is set to the right (if we want to change the next interval). Changing the \textit{Left/Right Edge} and \textit{Span} options will involve all the autos of the curve. Actually the changes concern the whole curve, not the individual keyframes.
214
215 \textbf{Warning}: bump autos works only via slider. Dragging the keyframe with the mouse makes you lose the \textit{right/left edge} and \textit{span} settings and behave as normal autos (figure~\ref{fig:bump-autos-02}).
216
217 \begin{figure}[htpb]
218         \centering
219         \includegraphics[width=0.5\linewidth]{bump-autos-02.png}
220         \caption{Speed autos slider}
221         \label{fig:bump-autos-02}
222 \end{figure}
223
224 With using the sliders on a track, the keyframes ganged track are changed if the positions match; tracks can be excluded by switching the track gang mode off. Another way to edit all armed tracks of all types at the same time is as follows:
225
226 \begin{itemize}
227         \item disable \textit{Master track} of all tracks except the first one, on which we will work.
228         \item switch to \textit{gang media} mode. Now only the Master track is visible, but every change made on its keyframes is also applied to the other tracks. (see \nameref{sub:displaying_tracks_ganged})
229 \end{itemize}
230
231 In the Camera and Projector tools configuration window \index{tool info} you will find the \textit{Bump curve}, \textit{Span} and \textit{Rigth/Left Edge} buttons. The Camera-XYZ and Projector-XYZ curves can also create and use Bump autos. (see \nameref{ssub:camera_and_projector_menu})
232
233 \paragraph{Note:} do not confuse the autos bump span button with the keyframes span button of the plugins (on MenuBar); they are different and work differently (see \nameref{sec:allow_keyframes_spanning}). With the plugin keyframes, the update is done by first creating a textual \texttt{diff} on the xml values of the plugin keyframes, then applying that diff to all of the keyframes selected in the \textit{span} range.  The bump FloatAuto \texttt{bump\_update} subtracts the old and new values to create a \texttt{diff} that is added to all of the values in the [\textit{right\_edge $\dots$ auto values $\dots$ left\_edge}] region created by bump autos and media endpts.
234
235 \section{Plugin Keyframes}%
236 \label{sec:plugin_keyframe}
237 \index{keyframes!plugin}
238
239 The Plugin keyframes are structured.  The individual data values are named parameters to the keyframe function.  For example, the hue plugin has keyframe parameters of hue, saturation, and value.  Each plugin has its own parameters, and what they do depends on the plugin.  Most of the time, it is pretty obvious what the value controls, like the audio gain plugin with the level parameter.  Some of the plugins have a wide variety of controls, like the titler which can setup a wide number of controls, like formats, fonts, styles, placement, and so on.
240
241 Plugins also may use interpolation to smooth the data between the keyframe paramaters on the timeline.  Just exactly how this is done varies with the plugin and is not always easy to predict, but this
242 is usually due to the nature of the keyframe parameter data.  For example, it does not make sense to interpolate which font is in use.
243
244 \section{Default Keyframe}%
245 \label{sec:default_keyframe}
246 \index{keyframes!default keyframe}
247 \index{keyframes!pulldown}
248
249 For plugins, there is a special hidden keyframe, called the \textit{default keyframe}, that is used when no previous keyframe exists.  It is like keyframe zero on the timeline, and it is persistent and shared on
250 all sessions.  The intent is to make a parameter set that is likely to be reused on all initial instances of the plugin.  An example may be to color correct a set of media that was taken in low light, or needs resampling to be played correctly.  The default keyframe is \textit{off the bar on the left side} of the plugin title bar and can not be seen.  It is used when there is no \textit{previous} keyframe for its default values.
251
252 It may be useful to create a default keyframe which has specific desirable values for later use.  To do this, set the timeline to position 0 and be sure to disable \textit{generate keyframes while tweaking}.  This will create a default keyframe at the beginning of the timeline which contains global parameters for the entire duration.  Or if you have copied a non-default keyframe via \textit{Keyframes} pulldown \textit{copy default keyframe}, it can be stored as the default keyframe by calling \texttt{keyframes $\rightarrow$ paste default keyframe}.  After using paste default keyframe to convert a non-default keyframe into a default keyframe, you will not see the value of the default keyframe reflected until all the non-default keyframes are removed.
253
254 The \texttt{keyframes $\rightarrow$ copy default keyframe} and \\
255 \texttt{keyframes $\rightarrow$ paste default keyframe} allow conversion of the default key-frame to a non-default keyframe.
256
257 \texttt{Keyframes $\rightarrow$ copy default keyframe} copies the default keyframe to the clipboard, no matter what region of the timeline is selected.
258 The \texttt{keyframes $\rightarrow$ paste} \texttt{keyframes} function may then be used to paste the clipboard as a non-default keyframe.
259
260 \textit{Typeless keyframes} enabled under the \textit{Settings} pulldown allow keyframes from any track to be pasted on either audio or video tracks.  Ordinarily audio keyframes can only be pasted to another audio track and video keyframes can only be pasted to another video track.
261
262 \section{Keyframe \textit{Edit Params} for Plugins}%
263 \label{sec:keyframe_edit_params_plugin}
264 \index{plugins!preset edit}
265
266 Keyframe values can be set using the various plugin \textit{plugins: show controls} \index{plugins!show controls} (magnifying glass) icon on the plugin track (figure~\ref{fig:parameters}).  It is possible to see all of the keyframe data in a raw format using the \textit{Edit Params} popup menu item which you will see when you right mouse click the keyframe icon on the timeline.  The keyframe data is stored in xml format, and the \textit{edit params} feature allows you to view and modify the xml data directly.  This normally should not be necessary since the plugin's control gui displays the intended parameters, but this will let you view and specify just about anything that can be specified in xml.  There is no validation checking of the modified data.
267
268 \begin{figure}[htpb]
269     \centering
270     \includegraphics[width=0.7\linewidth]{parameters.png}
271     \caption{Keyframe Parameters window for a Color 3 Way plugin added to the video track}
272     \label{fig:parameters}
273 \end{figure}
274
275 \section{Generate Keyframes while Tweaking / Automatic Keyframe Mode}%
276 \label{sec:generate_keyframe_tweaking}
277 \index{keyframes!automatic mode}
278
279 Tweaking is defined as changing a parameter while playing -- it can be small changes or small motion increments performed in a series.  These changes are recorded as a series of new keyframes on the timeline.  Enable automatic keyframe mode by enabling the automatic keyframe toggle, that is \textit{Generate keyframes while tweaking}.  In automatic keyframe mode, every time you tweak a key-framable parameter it creates a keyframe on the timeline.  Since keyframes affect playback, you should enable generate keyframes just before you need a keyframe and disable when your parameter changes are complete.  So turn on when ready to make changes and turn off when done!
280
281 Also, before making a change, be sure to check the \textit{View} pulldown and make the desired parameter visible with the enable checkmark.  The location where the automatic keyframe is generated is under the insertion point.  If the timeline is playing back during a tweak, several automatic keyframes may be generated as you change the parameter.  When automatic keyframe mode is disabled, adjusting a parameter adjusts the keyframe immediately preceding the insertion point.  For example, if two fade keyframes exist and the insertion point is between them, changing the fader changes the first keyframe.
282
283 \section{Compositor Keyframes}%
284 \label{sec:compositor_keyframes}
285 \index{keyframes!compositor}
286
287 Camera and projector translation is represented by two parameters: \textit{x} and \textit{y}, making it difficult to adjust with curves.  \CGG{} solves this problem by relying on automatic keyframes.  With a video track loaded, move the insertion point to the beginning of the track and enable automatic keyframe mode.  Move the projector slightly in the compositor window to create a keyframe.  Then go forward several seconds.  Move the projector a long distance to create another keyframe and emphasize motion.  This creates a second projector box in the compositor, with a line joining the two boxes. The joining line is the motion path.  If you create more keyframes, more boxes are created.  Once all the desired keyframes are created, disable automatic keyframe mode.
288
289 Dragging the auto curve with tweaking off, adjusts the previous keyframe.  With tweaking on, if no keyframe is at the timeline position, then a new one is created at that position and the modification value is applied.  If you are halfway between two keyframes, the first projector box is adjusted while the second one stays the same.  The video does not appear to move in step with the first keyframe.  This is because halfway between two keyframes, the projector translation is interpolated.  In order to set the second keyframe you will need to move after the second keyframe.
290
291 Image translation, motion direction, and speed determine the results.  Motion varies based on the  interpolation type that is set, for example, if set to Linear, the result will be uniform straight line motion.  Smooth is the default so that interpolation will generate curved lines with control points.  Ctrl-drag the endpoint of the control handle to adjust the curved slope.
292
293 \section{More about Editing Keyframes}%
294 \label{sec:more_about_editing_keyframes}
295 \index{keyframes!editing operations}
296
297 Keyframes can be shifted around and moved between tracks on the timeline using similar cut and paste operations to editing media.  Only the keyframes selected in the View menu are affected by keyframe editing operations.
298
299 An often used, keyframe editing operation is replication of some curve from one track to the other to make a stereo pair.  The first step is to solo the source track's record patch by Shift-clicking on the \textit{arm track} icon in the patchbay.  Then either set In/Out points or highlight the desired region of keyframes.  Go to \texttt{keyframes $\rightarrow$ copy keyframes} to copy them to the clipboard.  Solo the destination track's record patch by Shift-clicking on it and go to \texttt{keyframes $\rightarrow$ paste keyframes} to paste the clipboard.  Another common application for keyframe modification is to highlight a region on the timeline which contains multiple keyframes that you want to modify.  Then when you adjust a parameter or set of parameters, the change will be applied to all keyframes within the selection instead of a new keyframe being created.  This only works when the keyframe stores multiple parameters and only for mask and effect keyframes.  Other types of keyframes are generated as usual.
300
301 And there is an easy way to delete keyframes besides selecting a region and using \texttt{keyframes $\rightarrow$ clear keyframes}. Click-drag a keyframe before its preceding keyframe or after its following keyframe on the track.  This is the only way you can simultaneously delete keyframes on ganged tracks.
302
303 \section{Allow Keyframe Spanning}%
304 \label{sec:allow_keyframes_spanning}
305 \index{keyframes!spanning}
306
307 \textit{Allow keyframe spanning} is enabled on the timeline by clicking on the icon that
308 is on the right side of the \textit{Generate keyframes while tweaking}.  With this enabled,
309 when you create a drag selection and you modify a value in a plugin then everything in
310 the selection gets modified the same.  It uses the previous keyframe and if there is no
311 previous keyframe, then the default keyframe in your \texttt{\$HOME/.bcast5} definitions
312 is used.
313
314 This is particularly useful in plugins that have the \textit{Drag} box enabled.  You can
315 select the area on the timeline where all of the keyframes exist with the drag enabled,
316 turn on \textit{Allow keyframe spanning}, and then modify the menu for that plugin to turn
317 off the drag.
318
319
320 %%% Local Variables:
321 %%% mode: latex
322 %%% TeX-master: "../CinelerraGG_Manual"
323 %%% End: