MVN Animate Pro and MVN Analyze can accept a timecode feed from a timecode generator. MVN software does not generate its own internal timecode. In production, timecode is commonly used to sync multiple MVN systems and other data sources such as reference camera footage, facial capture data, audio, etc.
This functionality enables the correlation of motion capture data from several MVN systems and the data to be used with other motion capture systems, camera footage and audio.
The time code functionality requires that MVN is synchronized to an external source that supplies a time code. The same time code used also by the other systems, which the MVN data is to be combined with.
The Timecode in MVN can achieve time synchronization to within 10 ms.
NOTE: Any time code received by MVN will only use the hour, minute and second parts and will ignore the other fields. This is due to the fact that we don’t know the sender’s frame rate and other specific configuration details. At frame 0 that does not matter, so MVN ignores the other fields.
1. Set up hardware
1.1 MVN only setup
The best way to get a timecode signal into MVN is to hardwire a timecode feed from a master clock or timecode generator into the PC that is running MVN. Below is a setup that only uses timecode for MVN for both Link and Awinda systems.
Connect the LTC (Linear or Longitudinal Timecode) feed coming from the timecode generator into the audio jack of your PC. Make sure the audio jack is a “mic in” input or change the input on your PC settings.
If for some reason you can’t switch the input to “mic in”, then you may benefit from using a splitter like the one mentioned in this base article: Use time code with a single 3.5mm headset jack
The MVN hardware, Link or Awinda, connects to the MVN PC. For the Link, four people can connect to the Asus access point. For the Awinda, use one Awinda station per person. You can connect four Awinda stations to a single MVN session.
1.2 MVN synced with external devices
If you want to use a timecode generator to sync with 3rd party devices such as cameras, microphones, and headcams, confirm that the 3rd party devices support LTC timecode. Each 3rd party device should receive its own timecode feed from the generator.
1.3. MVN with Synced external devices and central control PC
It is also possible to connect the MVN workstation with external devices like a Central Control PC or a Sync Unit. The Central Control PC is meant to start and stop recordings on the different devices in the same network. A way to set up the hardware is depicted below.
For the Link, connect the MVN workstation, the Central Control PC, and all external devices to the same network via the Asus access point. The master clock does not need to be connected to the access point.
For the Awinda, external devices providing sync/Genlock can connect directly to the "sync in" BNC inputs on the Awinda station. For the other external devices (like headcams and microphones), connect them to the same network as the Central Control PC via Ethernet cables and an Ethernet switch or an access point/router.
NOTE: the 3rd party devices should allow for external triggering over the network in order for this setup to work. In other words, check those firewalls!
2. Setup MVN
1. Start MVN Animate Pro / Analyze
2. Go to Options > Audio LTC Decoder
In the Audio LTC Decoder Options window, you can change the preferences suitable for your setup. Below, the different options are explained.
Audio input device
Selects the audio input device to record and decode audio from. Click the Rescan button to scan for available audio devices. A rescan may be required after plugging in an audio source.
Enable audio LTC decoding
When checked, if audio is available, it will be recorded and decoded. Uncheck this to turn off the LTC decoder. Click the Restart button to reinitialize and restart the LTC decoder. This will also reset all status information.
When checked, decoded time codes will be used to synchronize the time during a recording. Uncheck this to never synchronize the time with the decoded time codes.
Synchronize every x seconds
By default, time synchronization is done every second. This setting can be used to reduce the synchronization to once every x seconds.
Log received time codes
When checked, decoded time codes will be logged in the Audio LTC Decoder Log Window (See the View menu). Uncheck this to prevent the logging of decoded time codes.
Log received time codes every x seconds
By default, logging of received time codes is done every second. This setting can be used to reduce this to once every x seconds.
The status information shows, amongst others, information about the decoded time codes. Every decoded time code also has a frame number. When more than one time code is received per second, the frame number counts the time codes in that second.
A decoded time code is processed only if the frame number of the decoded time code is 0 (the first time code received per second). This means that the decoder processes a maximum of one time code per second. Decoded time codes that do not have a frame number of 0 are simply discarded.
Furthermore, when a time code is considered invalid or unexpected, it is skipped as well. A time code is considered invalid or unexpected if:
- The time difference between the current time code and previous time code is too much.
- The time code differs too much from what is expected based on the actual passage of time.
When too many invalid time codes are received in sequence, it is assumed that the LTC generator changed its time. The LTC decoder will then perform a reset and reinitializes.
NOTE: If too many invalid time codes are received (See also the ‘Time codes invalid/skipped’ status information), it may be caused by an audio recording volume that is too low or too high. Adjusting the volume will solve the problem in most cases.
This shows whether the LTC decoder is currently recording and decoding audio. Values can be Active or Inactive.
Last processed time code
This shows the last time code that was decoded & processed. Note: the decoder only processes 1 time code per second.
Last synchronized time code
This shows the last time code that was used to synchronize. Normally this is the same as the last processed time code but this can be changed when the ‘Synchronize every x seconds’ setting is used.
This shows the total amount of audio (in milliseconds) that has been processed by the decoder.
Time codes decoded
This shows the total number of time codes that have been decoded. This includes all received time codes, including time codes with frame numbers other than zero and time codes that will be considered invalid later. Between parentheses, it shows the number per second of processed audio.
Time codes processed
This shows the total number of valid time codes that have been processed. This only includes time codes with frame numbers equaling zero. Between parentheses, it shows the number per second of processed audio.
Time codes synchronized
This shows the total number of valid time codes that have been used to synchronize with. Between parentheses, it shows the number per second of processed audio.
Time codes invalid/skipped
This shows the total number of processed but invalid time codes that have been skipped. Between the first parentheses, it shows the number per second of processed audio. Between the second parentheses, it shows the percentage of processed time codes that were invalid. If this percentage is too high, the background will be colored red.
NOTE: If too many invalid time codes are received, check if the recording volume is too low. A sufficiently high recording volume is required to properly decode the time codes from the audio.
This shows the audio codec that is being used.
This shows the current audio sample rate in Hertz.
This shows the number of audio channels.
This shows information about the audio sample type. It includes the sample size, the sample type and the byte order.
This shows the usage of the internal audio buffer. It shows:
- Cnt: This shows how many times the audio buffer has been read. This value should increase during decoding.
- Min: This shows the minimum number of samples stored in the buffer before being read.
- Avg: This shows the average number of samples store in the buffer before being read.
- Max: This shows the maximum number of samples stored in the buffer before being read.
- Size: This shows the maximum number of samples that can be stored in the buffer.
High 'Avg' or 'Max' values (more than a few KB) indicate that the decoder is not able to process the incoming audio fast enough. If values reach the maximum buffer size, the data is simply discarded.
3. MVN Time Code and output
3.1 MVN time coded timestamp
To show the timecode in MVN, go to Options > Preferences > User Interface and set Frame time format to Time Code (T).
This frame/timestamp is shown in the viewer's bottom right corner when recording and playing back data.
Selecting the “Time Code (T)” option will show the time code for the key-frame instead of recording duration.
The MVN timecode is calculated from the timestamps. Typical timecode signals include 24 FPS film) 29.97 FPS (NTSC), 25 FPS (PAL) and 30 fps (ATSC). This means that it can occasionally happen that there are more or less than 240 frames (Link) 100 frames (half body Awinda) or 60 frames (Full Body Awinda) in a ‘time code second’ and / or that there are double frame numbers.
Also, after long takes (e.g. >1 hour) it can occur that the total number of captured key-frames differs between the MVN Systems as not all clocks of the MVN Body Packs are exactly the same (accuracy is around ±30 ppm).
Does timecode provide sync in production?
Timecode is not Genlock and does not sync clocks in production. However, timecode does embed a timestamp on every frame of data that can be referenced later for syncing purposes. For example, if you capture body motion capture data and facial capture data, you can use the timecode embedded in the body and face data to sync the performance in post-production by lining up specific timestamps that look like 00:00:00:00.
3.2 Timecode in MVNX file format
The MVNX (MVN Open XML format) file stores the start of the recording in the recData field of the mvnxInfo tag. With respect to the timestamp the following fields are stored:
The current <F> tag has an attribute t=”...” which indicates the timestamp for the frame, the formatting depends on a new timeFormat field in the <mvnxInfo> tag as described in the following.
The <mvnxInfo> tag will get a new “timeFormat” attribute, which specifies the format of the time field in F tags as follows:
- timeFormat=”ms” makes the time “YYYY-MM-DD HH:MM:SS.mmm”, where mmm is in ms
- timeFormat=”timecode” makes the time “HH MM SS Frame”. Frame is the number of MVN frames since the second, starting at 0.
To specify the timeFormat in MVN, an option “Time code” is available on to the “MVNX” tab in the “Preferences” dialog. When checked, MVN writes the time code in MVNX file. By default the option is checked. For more information, check the Base article on the MVNX file format.
3.3 Timecode in FBX file format
To export timecode in an FBX file, the FBX exporter must be set to Time increment mode: Dynamic time and Start at: real start time (found under Show Options in the Export File window). For more information on exporting, check the Base article: exporting in MVN.