Palette:moviePlayer

From Derivative
Jump to: navigation, search

Summary[edit]

The moviePlayer Palette component is a versatile user interface for loading, playing and exploring movie files, setting cue points and playing sections of movies. Movie playback can be externally controlled with ramps, python commands and pulse parameters. moviePlayer without a Ui is the component movieEngine, which can be embedded in other tools and controlled externally.

When used with Movie Spec components, moviePlayer can play many movies with a minimum footprint. A Movie Spec component specifies a movie file path and movie adjustments like in/out trim points, cropping, brightness/gamma/black level, speed, cues, metadata and more.

To start playing with moviePlayer, get it from the Palette or the forum, drop it in a network, then display its viewer in a floating window or the node viewer or in Perform mode. Then you can change the file name or drag-drop movie files from a file browser onto the panel UI.

Like with VLC Media Player and QuickTime, you can scrub, play, pause and listen to movies' audio.

On the user interface, press the Par+ button to bring up the movie parameters. Or on the parameter dialog, press Open Movie Parameters.

When you create cues (sub-clips), moviePlayer is most useful for playing live or giving presentations in TouchDesigner networks (an alternate to using PowerPoint or Keynote) because of the ease of jumping around long movies. moviePlayer allows you to non-destructively prepare a movie for playback. It works well with a touch screen.

Play and Position Controls[edit]

Play/Pause: The || and > button.

Scrub-and-pause, scrub-and-play: When dragging on the scrub bar, when you release it, if you have dragged your cursor up off the top of the bar, moviePlayer will continue to play the movie from the scrub point. If you have dragged down off the bar, it will pause the movie. Otherwise it will keep doing what it was doing.

Stepping: For precise positioning, the - and + buttons let you step forward and backward one frame. If you hold these buttons down, it will increment/decrement 1 frames every 1/6 second, and as you drag right/left off the + and - buttons, it will increment/decrement faster.

Swing (Ladder): The <> button lets you inspect around the current frame: If you click <> and drag left/right off the button, it will go and pause at nearby frames, and if you continue to hold down and bring the cursor back to <>, it will return to the initial frame. The scale is exponential.

Keyboard: The keyboard's left/right arrow keys step forward and backward a frame. The Space bar pauses and un-pauses. (version 13 and later)

Roll over the time counter to get the movie length. Select from its menu to switch to seconds, frames and timecode.

Movie Settings[edit]

On the parameter dialog click Open Movie Parameters, or put your cursor over the panel to show the basic controls and click the Par+ button on the left. This brings up the custom parameters of the current movie and its cues, if any.

Parameters on the Settings 1 and Settings 2 pages configure and pre-process the movie: trim, crop, level adjust, etc.

UI Arrangement and Behavior on Setup Page[edit]

Look at the custom parameters of moviePlayer. All UI looks and controls are tied to parameters on the Setup (UI in version 12) page.

Here you can turn on Control Panel Always On while you are learning the UI.

Force Resolution internally scales the movie to your desired resolution when it is read.

You can also control opacity of the UI's overlay panels, and whether you want them displayed only when you roll over the panels or always.

Advanced: On Setup (UI) -> Action on Select, you can play the movie when you click on the moviePlayer1 node in a TouchDesigner network. With other options, it can pause the movie when you click on another node. etc. You can play a certain cue when you select the movie. This is useful when demoing movies in a TD network where you can click a node and it plays your preferred cue.

Audio[edit]

moviePlayer optionally plays audio out the default audio device (Internal Audio Player on the Setup page). Its Volume parameter on the Setup (Controls in version 12) page is mirrored in the UI as the Audio slider. Also the second output of the component is the audio of the movie, which can be routed to a mixer/output.

Creating Cues[edit]

You can set up cues (a point or sub-section of a movie), each with a "beauty" frame, a "start" time, an optional "end" time and a end-start crossfade time.

Quick Cue: Pause the movie somewhere. Move your cursor to the top part of the player. The cue grid comes up (mostly empty at first). Click Add Cue. It will add a 5 second cue at the current frame. Go and pause to some other frame after the current frame. Again in the top area, press the E= button to set the End time. Now you have a cue segment. Press the grey Cue 1 button at the bottom. It will turn green and play/loop the cue.

Expert: To get at more controls you would use if moviePlayer is small, set Cue Edit Area set to Cue Columns. If you click in the top row of boxes labelled "B", it goes to the respective Cue's Beauty frame and pauses. If you click in the middle row of boxes labelled "S", it goes go to a cue's Start point and plays (hold Shift to pause). If you click in the third row of boxes labelled "E", it goes to a cue's End point and pauses. These provide quick-access jump points.

There are 4 ways to set the beauty, start and end points (some are better for touch screens):

Pause the movie where you want set a start, beauty or end point.

(1) Press the S= or E= buttons in the upper section. S= sets both the beauty and start frames.

(2) With Cue Edit Area set to Cue Columns, press Ctrl-click on the B, S or E boxes.

(3) Use the Set> menus in the cue grid.

(4) Right-click on an existing cue in the timeline and use the same Set> menu.

Thereafter, when you left-click on the B, S and E boxes, it will go to those times in the movie.

Using Cues[edit]

Assuming you have created at least one cue (see above), in the bottom row of the timeline, if you click on an icon image it goes to the beauty frame for that cue and pauses. If you press Shift-click on the icon, it will go to the cue's start and pause. You can play forward from the beauty or start times if you drag off the icon to the right (convenient for touch screen).

In the second row from the bottom, click the grey cue boxes to play only the cue's segment from start to end, and depending on the Cue's Next Behavior setting, loop the cue. The box turns green indicating it will only play the cue start-end range. Press Shift-click to pause at a cue's start time, or press the cue and drag down off the button. Press > to continue, keeping the cue selected (green). The first click on an unselected cue sets it to the cue start, the next click on that cue scrubs the cue.

End-to-start crossfade times are set per-cue: Set the the Crossfade parameter of the individual cue's parameter dialog via Par+ or via Set> Cue Parameters. (The Crossfade of the full movie (equivalent to cue 0, or Full on the timeline) is set in the movie's Settings 1 page.)

Top Area: Cue Columns or Cue List[edit]

You can change the display of the top area to display cues as a time-ordered list. On the Setup page, change the Upper Display Area menu to Cue List on Rollover.

Cue Internals[edit]

Note that every cue is a Base component in moviePlayer1/mvspec/cues, each with a few custom parameters.

After pressing Open Movie Parameters on the parameter dialog, or Par+ on the panel, if you have set a cue, you can see the Cues' parameters by selecting it in the top row of buttons. Or in the Set> menu, select Cue Parameters to bring up the parameters of a cue.

Here you see where the start, end and beauty times are held. You can name the cue. The Enable parameter undisplays the cue in the timeline, and is useful when it gets too cluttered. The Next Behavior menu allows you to stop or loop when reaching the end of a cue. You can set it to go black (0 0 0 1) or zero (0 0 0 0) at the end of the cue. You can safely delete or re-order cue1, cue2... components in the cues network, or via the Set> menu.

Movie Adjustments[edit]

Press Open Movie Parameters on the parameter dialog, or Par+ on the panel. The parameters on Movie -> Settings 1 and 2 prepare whichever movie it is playing: Crop, Black Level / Luminance / Gamma adjust, audio gain etc.

External Control of moviePlayer[edit]

To drive moviePlayer externally you can use CHOP timing ramps (like from a Timer CHOP, Beat CHOP or LFO CHOP). You can use python trigger commands to position/play at specific times or cues, or pulse parameters on the dialog UI that jump to cues or specific times.

To drive it externally, go to the External page, choose a CHOP and a channel that you want to drive it with and set the CHOP and Channel parameters. Select the appropriate units - seconds, frames (timeline frames) or 0-1 fraction. Then turn on External Control Active. The moviePlayer playbar should go red and the full timeline or the current cue should be under the controls of the channel.

You can refer to values in the third output of the CHOP which contains 3 constant channels: length (how many seconds long in moviePlayer is the currently selected cue (cue 0 is the full movie)), duration (this is the length divided by the Speed parameter - the movie takes longer to play if you set the Speed lower than 1)) and the movie's rate (images per second).

On the "Cues" page of the component's parameters, you can select a cue number and press Go to Cue and Play, for example. You can drive this with python or by exporting to the parameters.

You can alternately set a time and press Go to Time and Play.

The python extension of the component has the functions GoToCue(cuenum, cuepoint, play) and GoToTime(seconds, play). Example to go to 50 sec and play:

op('moviePlayer1').GoToTime(50.,1)

Also the parameters on the Cues page of moviePlayer can be used to jump to cues, pause, play, etc.

Outputs[edit]

The movie image and audio go out the first two outputs. Output 3 is the current movie's aspect ratio, length and rate. Output 4 contains cross-fading channels that may be useful.

moviePlayer contains about 50 nodes initially without cues - your GPU memory may become the limiting factor as you add many moviePlayers. But its default behavior is to pause moviePlayer when it is un-selected, to avoid using GPU and CPU time.

Multi-moviePlayers or Multi- "Movie Specs"[edit]

There are two ways to manage multiple movies. Most simply, you can duplicate moviePlayer1 in the network and alter the duplicates. This will let you play several movies at one time. Changing the file name will delete all its cues and reinitialize all the parameters.

Alternately, if you have more that 10 movies or so, you can have a multitude of lightweight "Movie Spec" components, and drag-drop them onto any movie player. This is equivalent to setting a moviePlayer's Movie Spec parameter to point to the external mvspec component.

To create a Movie Spec component, on moviePlayer, on the External page, press the parameter "Copy Cur mvspec Below". It copies the current settings of the movie of moviePlayer to a component mvspec1, just below moviePlayer in the network.

( Internally it is copying the template moviePlayer1/mvspec1 or the latest mvspec outside moviePlayer1. )

The Movie Spec components are very lightweight. Inside it are 4 passive nodes plus one empty Base component per cue.

You can make several copies of mvspec1. Then for each mvspec*, you can edit its parameters manually. Then you can drag-drop it onto the moviePlayer viewer, or assign it to the Movie Spec parameter of moviePlayer. Then you can edit and add cues etc as you normally would with the moviePlayer UI. All edits are saved in your mvspec1 component.

movieEngine - moviePlayer Without UI[edit]

movieEngine is a lightweight component that can be embedded in other tools to smoothly drive movie playback and switching.

On moviePlayer, on the External page, press Create Engine COMP Below. It will create movieEngine1 in the network below moviePlayer, which is the same as moviePlayer, but with its UI removed. It is controllable with its parameters and its Extensions calls in the same way as moviePlayer.

Crossfading Between Two movieEngines[edit]

To do crossfading or exact frame cuts between movies, you need two movieEngines or moviePlayers.

Every time you assign a new mvspec to moviePlayer's Movie Spec parameter, it will take a few frames to unload the prior movie, open the new movie and load the number of pre-read frames into the GPU. (It uses the Timer CHOP for this, and you can watch the timing on the out4 of moviePlayer (mixed up channels in 2018.20100).) So one moviePlayer can never have a perfect cut between movies. For this reason you need two moviePlayer components to perfectly cut or crossfade between them. You get the second moviePlayer to pre-load the next movie before making a cut or crossfade. You can use the "fade fadein" channels coming out of the 4th output of moviePlayer to control the cross-fading.

Parameters - Setup Page[edit]

Movie Spec Moviespec - tbd

A built-in panel in TouchDesigner that contains a library of components and media that can be dragged-dropped into a TouchDesigner network.

A custom interactive control panel built within TouchDesigner. Panels are created using whose look is created entirely with TOPs.

The width and height of an image in pixels. Most TOPs, like the can set the image resolution. See for the width/height ratio of an image, taking into account non-square pixels.

An which operate on (a series of numbers) which are used for animation, audio, mathematics, simulation, logic, UI construction, and many other applications.

The Graphics Processing Unit. This is the high-speed, many-core processor of the graphics card/chip that takes geometry, images and data from the CPU and creates images and processed data.

An that contains its own inside. There are twelve 3D and eight 2D types. See also .