Hochpräzisions MTC Timecode Sender und Empfänger

The MTC Sender is....

... a tool to sync multiple applications by Midi Timecode.
... a tool that plays video with a predefined window size and location on a multi-screen system in sync with MTC.
... a tool that uses other apps to display audio visulizations based on a predefined timeline in sync with MTC

The MTC Sender is not...

... a live performance tool. You can just play your predefined timelines.
... able to mix video or audio. You have to use prerendered content.
... a audio visualizer, but you can use external apps for this purpose and trigger them by a predefined Timeline in sync with MTC.
... a DMX sender, but you can sync DMX applications which can handle MTC.
... a MIDI sender, but you can sync your MIDI devices with MTC or use basic MIDI commands in predefined timeline to trigger other apps.

About

I work with different programms for Entertainment. Sunlite Suite 2 to control DMX Fixtures from Nicolaudie, Beyond for Show-Lasers from Pangolin and Madrix from inoage. I'd like to create shows with those programms, but I had trouble syncing their Timeline. After days of trouble and several tests, I came to the conclusion, that no Software MIDI Timecode Sender (MTC) is sending the MTC the right way. I tried it with Sunlite's integrated MTC Sender but Beyond couldn't handle that for a long time and it startet to jump between times. I also tried other MTC Software senders but it fails with all of them.

I also tried some MTC synchronous Video Players like ChainGang and MTC Video Slave, but they all couldn't sync with any of the MTC senders I tried and the video was not running smooth.

This was the Point, where I digg deep into the MIDI definition and began with some test. After a few hours, I have found out, that none of those MTC senders are actually following the MIDI specifications. So I startet to build my own one, with the goal, to fully respect the MIDI definitions and reach a maximum of precision.

My MTC Sender reaches a accuracy of aprox. 0.5 ms between MTC Quarterframes and has no time drift. This means, it is fully in sync with Computer time all the time. I think it is one of the most precise MTC Software Sender which is currently available. (If there are any others)

I also added some special features which I missed in other apps. I will use this app to Sync other programms with MTC (Laser and DMX Fixtures). Additionally I use this app to playback prerendered videos for complex shows. In future, it should also be possible to combine the prerendered video with other audio visualizers. The MTC Sender will never create visualizations itself. The goal is to use other visualizers like Aeon, R4, WinAmp and MediaPlayer. They will be triggered automatically at predefined MTC timecodes and the window will be displayed without headline or border at the same position as the video window to fit LED-Screens.

 

Source Code in VB.net (Visual Studio 2012) for sending and receiving MTC Timecode is available on request.

 

Features

High precision MTC sender with accuracy of aprox. +- 0.5 ms per Quarterframe.

Timedisplay shows  Hours : Minutes : Seconds : Frames : Quarterframes @ Frames per Second

Adjustable Time-Slider.

Option to send Note on / Note off with Start and Stop of MTC sender for starting / stopping other applications.

Video / Audio Playback in sync with MTC sender or incomming MTC message.

Video-Playback-Window is optimized for Multi-Display and LED-Display purposes. Size and Video-Position is set by entering the width, heigt, top and left in pixels.

Video / Audio player supports all video-formats which are playable throug DirectShow (like Windows Media Player). Install of FFDShow is suggested.

High precision Mode or Normal Mode.

MTC Receiver can handle MIDI conform and non MIDI conform data. When in "non MIDI conform" Mode, the receiving precision is aprox 33 ms instead of 8.33 ms cause Quarterframes are ignored for non MIDI conform senders.

Customizable Layout

Sending of MTC Quarterframes and System Exclusive Full Frame Messages when Timeslider is in use.

Sending of Midi Clock.

 

Known issues

Name of Midi-Device is not fully displayed. This may be a problem if you have multiple devices which are displayed with the same displayname.

Video and Audio will only be kept within a timewindow of 150 ms from MTC Timecode. Asuming the MTC received is as close as PC Clock as possible (which it should be) there is no need for a permanent sync. Resync causes gaps in Playback and you won't see or hear a difference when the sync is within 150 ms unless you have multiple audio streams on multiple PCs which should be kept in sync. This won't work at the moment.

If the Video Frame lays over the MTC Sender, you won't be able to close the Video Frame with Mouse or ESC. Klick on the Video Frame and use Shift + F4 to close the Video Frame.

The MTC Receiver does not support MTC Full Frame Messages.

 

ToDo:

Option for disabling MIDI Start / Stop on MTC Sender start and stop.

Option for starting and stopping MTC Sender with "MIDI Start" and "MIDI Stop"

"Resync" Button for BPM

Adding Timeline to run scripts and external apps.
This will allow the use of external audio visualizers like Aeon, R4, WinAmp and others to be triggered at a given time. It also allows to define the size of the main window of the app like the build in Video Playback Window. This will especially be usefull when using LED Screens or for other Multi-Display purposes. The Border of the app is automatically removed, so you will only see the content of the visualizer. (Tested with Aeon)

Adding basic MIDI Commands to Timeline

Tips

To allow additional settings for Video (aspect ratio, gamma, etc) I suggest to install K-Lite Mega Codec Pack and set FFDShow as prefered renderer for your Video file. With the FFDShow Video configuration, you can change aspect ratio, gamme, brightness, and much more. The configuration is displayed as Icon in systray as soon as a Video is played back with FFDShow.

If black of your Video is not realy black but dark gray, you may go to FFDShow Videoconfiguration -> Level and set Input-Level to 16 - 235 and Output-Level to 0 - 255. This is caused by the difference between PC and TV display and depends on the video file.

 

System requirements

MIDI Interface or Software MIDI solution like rtpMIDI

Windows 7 / Windows 8
(32 bit and 64 bit)

.Net Framework 4.5 (included in Windows 8) Download

DirectX9 if you want to use Video / Audio feature.

K-Lite Mega Codec Pak / FFDShow is suggested for Video Playback.

 

Download

MTC Sender - Version (13.8.12)

MTC Sender - Version (14.11.13)

PayPal - The safer, easier way to pay online!

 

History

Version 14.11.13

Added BPM TAP and Start / Stop Button

Added BPM List to change BPM automatically at predefined Timecode. This will be saved automatically for each video / audio  file.

Added internal BPM average calculation. BPM is now displayed as "Actual BPM received | Average BPM calculated for the last 2 beats | Average BPM calculated for the last 10 beats"

Changes in High Precision Mode reduces CPU load up to 80%

Version 13.8.12

Added Video offset in ms. This will be saved for each audio / video file.

Added Video resync offset for optimizing resync. This will be saved for each audio / video file.

Send MIDI Clock simultanousely with MTC. BPM is saved for each video / audio file.

Change BPM during Video / Audio Playback with predefined BPM-List.

Option to change SysEx Channel.

Option for sending "MIDI Start" and "MIDI Stop" with start and stop of MTC sender.

Show incomming BPM.

Version 13.8.10

MTC Full Frame Messages are send when using the Timeslider.

MTC Full Frame Messages could be send at regular interval while pause or stop.

Position can be changed during pause and MTC will continue at the selected position after continue. MTC Full Frame Messages are send during Position change as advised by Midi definition.

MTC jumps back to 0:00:00 when hitting STOP and a Full Frame Message is send.

Version 13.8.4

Pause Button is now released on Stop.

Current delay between Video / Audio and MTC Sender / Receiver is displayed in the "Resync"-Button.

Time Slider End Time is now set to Video / Audio length.

Automatic Resync if difference is > 150 ms for MTC sender and receiver. (200 ms if "Sender is not MIDI conform" is checked)

Changes in layout and window position are now saved and restored automatically.

Version 13.8.3

Initial Public release