RFC: Cantabile and Video Playback... what's needed?

Thanks Derek…

As mentioned, no promises here, and mostly I’m just gathering ideas and thoughts at this point and your feedback is much appreciated.

Brad

1 Like

No worries. I know I can meet my needs by other software external to Cantabile, but it would be good to see video integrated.

I also know you need to prioritise on where the main user interest is, but I am perhaps a little surprised that I am the only responder to your query?

Surely (but don’t call me Shirley), I cannot be the only Cantabile user interested in the visual aspects of the show as well as the sounds? Maybe the differentiator might be one of scale? In bands where I have done both, we are not large in terms of reach and scale (i.e. we are not famous, with caboodles of money and resources to employ lighting and video engineers). So I am the keyboard player, light man and video man; why does it always seem to fall to the keyboard player? :slight_smile:

Because he is the mad scientist in the band! :laughing:
Or the wizard (at least when he wears a glittering cape).

Gabriel

Sorry for wasting bandwdith with silly jokes…well, not really… :wink:

3 Likes

More like we are the nerds/geeks with the technical know how!

4 Likes

I know how you feel brother. The “technical know how” upsets the ignorant ones.

OT Corky :crazy_face:

1 Like

A post was merged into an existing topic: Thinking about show notes

What I’d be looking for is the following for display on a projection TV -

  1. Ability to start/stop a video file, with one or more video files associated with a song (just as I might trigger an audio file in media player)
  2. Ability to display a band banner
  3. Ability to switch to one (or more) live cameras
  4. Support for the Imaginando product or similar. This is of far less importance as we use that in the studio, make a recording, and then use that recording as a video.
  5. Ability to display a black screen when video isn’t playing (I tried a VST that displays video, but it shows the opening frame until the transport starts rather than displaying a black screen. A workaround is to edit each video to add a black first frame, but that a lot of extra effort)

Does anyone have an interim solution that works? I’ve thought to use vlc since it supports cameras and incoming audio streams, but I don’t know if it would do both at the same time and if I issue multiple commands from Cantabile it just opens up a new instance of vlc for each command, which is not what I want.

Hi @Ivan

I haven’t tried, but this looks interesting:

GitHub - ojacques/VLCMidiRemote: Listens to MIDI events, and play videos or audio from a VLC playlist based on MIDI notes

Brad

1 Like

Interesting as that was what I was using SCS11 for, but it is a bit clunky

No promises, but I’m thinking about knocking together a simple content/control server for video playback that would be controllable via Cantabile.

I understand most of the above requirements except for live camera feed display. What are we talking about here - are these cameras attached directly to a PC, or IP/Wireless cameras. Any further detail in this area would be useful.

1 Like

I have the same user case #1 from Derek: in one of my groups we play music themes from old TV series, and videos are projected live behind the band , so a basic video start/stop/loop with MIDI CC would be more than enough (audio is not needed for me)

Luigi

1 Like

Hi @brad in media world, we tend to use MTC (MIDI Timecode) for video sync. It would be wonderful if Cantabile could support both sending and receiving MTC, in addition to MIDI clock.

Here are a couple of software for video sync, both paid and free, that might serve as inspiration:

https://non-lethal-applications.com/video-sync-6-pro

Cheers!

2 Likes

Hi @kurzy,

Thanks for the suggestion re MTC. I’ve looked at this before but can’t remember off hand why I never implemented it. I’ll take another look when I get a chance.

Brad

1 Like

Hey Guys,

I’m thinking of experimenting with a simple web based, MIDI controllable video solution. It’d be completely separate from, but controllable from Cantabile:

Control Server

  • A server that you point web browser to. It tells the browser which video stream to play and can instruct the browser to play/pause etc…

  • Has a MIDI interface that Cantabile can use to tell it which video to load, on which channel and then commands to play/ etc…

  • MIDI commands get forwarded to connected web clients to control what’s shown.

  • Support for 16 MIDI channels each capable of playing a different video stream.

  • It would have config file that maps MIDI program numbers to video/image files.

Content Server

  • A server that can stream video and/or static image content.

  • This is where the web browser will get the actual video/image media from

  • Can be the same machine/server as the control server.

Typical Use

  1. Create a config file that maps MIDI program numbers to media files (either video files, static image files or other URL types). The media files could be on the same machine as the control server, or somewhere else (on a separate content server, you could even stream from web if you wanted)

  2. Start the control server (probably a command line program)

  3. Point a web browser (on any machine) to the control server and choose which MIDI channel it should control it (1-16). Put the browser in full screen mode. (repeat for as many displays/channels as you need)

  4. Setup a MIDI connection between Cantabile machine and the control server (either physical midi connection, or virtual MIDI port, or rtpMIDI over network etc…)

  5. Use bindings in Cantabile to send MIDI messages to load/play particular media file on a particular channel as and when required.

  6. Any browsers configured to stream a particular channel will automatically stream/start/stop etc… according to MIDI commands sent from Cantabile (or any other controller).

Notes

  • Cantabile, the control server, the content server and web browsers can all be on the same or different machines. (though I’d recommend keeping the content server and web browsers separate from Cantabile).

  • You could have multiple control and content servers

  • Multiple browsers can all connect to the same channel - so you can essentially have unlimited views of 16 different channels.

  • Can be controlled by Cantabile or anything capable of sending MIDI events.

  • Not sure about video sync - it might be possible by having the web clients adjust playback speed on the fly to keep in sync, but that’s probably something for later. If you just want to play a video file while you perform and precise sync isn’t important then I think this solution should work fine.

  • Not sure about video camera support. It might work out of the box for cameras that can viewed directly from a web browser if such a thing exists (just map a MIDI program number to the URL of the camera). Aside from that it would require a content server that can connect a USB camera and make it available as a http/rtmp feed. I’ve done a little investigation into this - maybe using OBS: All Versions - How to set up your own private RTMP server using nginx | OBS Forums.

Anyway… is this worth pursuing?

Brad

1 Like

Hi,
I think you are con the right track. Most users might want video playback for visual cues or effects rather than audio streaming. The key features would likely be:

  1. Video Display: Linking a video file to a song and displaying it on screen.
  2. Playback Controls: Ability to start, stop and seek through the video.
  3. Sync: Basic synchronization with Cantabile’s transport position, but without complex speed adjustments.

These features would cover common use cases like visual accompaniment for live performances or rehearsals.

Thanks

You may be interested in the solution used by front of house engineer for Carl Palmer…

Please note, when used with Cantabile, VidPlayVST option ‘SYNC: Use PPQ position’ MUST BE SET

Again on the right track - but some additional suggestions -

  1. Since a video or image name can be encoded via sysex, I’d suggest using that method rather than a configuration file. E.g. expand “media player” to accept video files (and send the file names to the server). Then existing synchronization methods such as making the media player a slave, selecting which video to play, etc. could be used, with media player communicating appropriate info to the server. This wouldn’t though support 16 channels each having their own stream, but someone else would need to indicate they’d need this. We wouldn’t since we plan to only use one projector at gigs.

Re the config file, I currently am using another solution that requires using a config file and its easy to make mistakes. In “typical use 5” above, you would provide a method for a binding to send an encoded name to the server.

  1. Video camera support is important for my band. We want to be able to play video in background, then replace parts of the video (or overlay a subwindow) with live video of the band. This could be with either USB connected cameras or with IP connected cameras using DroidCamX or similar.

I looked at this option and didn’t find it to work well with Cantabile. The main issue is that I wanted “Detach Window” and “Mode: Full Screen 2” so I could display the output on my projector, but those have to be set manually - those options don’t seem to be exported in properties. Cantabile does save the song name, so it makes it easy to put a separate vidplayvst plugin into each song with the song name, but without a mechanized way to set the modes correctly this is useless for us. I did try putting it into a linked rack so that the mode settings wouldn’t change, but having the song set the video file name didn’t work. Did you get it to work?

Works for me. I like @Ivan ’s idea for SYSEX as well

I finally put together a little proof of concept for this.

Cantabile → MIDI → “The Server” → Web Browser

See demo.

I think ths could work.

3 Likes