Page 1 of 1

Ursa Mini 4K tally

PostPosted: Fri Mar 02, 2018 6:29 pm
by JoaoSMD
Hello
I need your support regarding a studio configuration using a non-BlackMagic vision mixer and three Ursa Mini 4K:
Is it possible using a non-BlackMagic vision mixer , with GPI/GPO, activate the Tally light in the Ursa Mini 4K cameras/viewfinder ? If so, what will be necessary and what connect should I do .
I have the ATEM Talkback converter.
regards

Re: Ursa Mini 4K tally

PostPosted: Fri Mar 02, 2018 7:36 pm
by Xtreemtec
You need an Arduino Uno board and the BMD SDI shield.

In the manual of the SDI shield is a perfect example on how to do Tally inputs on the arduino. My bad.. I thoughed it was.. But it was a Blink example. See code under here for an example.
http://documents.blackmagicdesign.com/ArduinoShield/20171129-08e66f/Blackmagic_3G-SDI_Arduino_Shield_Manual.pdf

tallymixer.png
From the manual of the SDI shield.
tallymixer.png (75.36 KiB) Viewed 7838 times

You want to put a SDI splitter in the SDI out of the SDI Shield to feed all your cameras. The signal has ID's inside so the same signal can be send to all cameras. Only need to set the CAM ID's inside the cameras.

Here is the code for an Arduino Uno to do 4 Preview and 4 Program Tally pins to SDI.
Dont forget to remove "delay(250); " after testing.. This will make your testing easy as you can read what is happening in the serial terminal for debug.
After you are done testing and have it all wired up correct.. Remove that line and the code will execute real time speed.

Code: Select all
/*
  SDI Tally interface based
  Turns tally of the cameras on and off based on pins pulled low.
  This interface is programed for Potential free outputs on a video mixer.
  This means that if the tally output of the video mixer is active it will make a connection to ground.
  By configuring the inputs with pull-up they are active 5V high and when pulled low to GND it will send that ports tally to the SDI output.

  Written by Daniel Wittenaar for free use.
  Use code and arduino's with care!! I'm not responsable for any damage caused by using this code!!

  When you don't know how electronics work always ask advice from an expert!

  I have put a  delay(250);   in the code. This is for debugging purposes. When done with serial debugging remove or //  the delay to have a more responsive interface.   

  This example code is in the public domain.
  You may re-distribute and share this code. But you need to leave this info unchanged and included with the code.
*/

#include <BMDSDIControl.h>                                // need to include the library
#include <Wire.h>                                         // Included because i had error with the original BMD Lib saying Wire.h did not exist

int PGM1 = 2;
int PRV1 = 3;

int PGM2 = 4;
int PRV2 = 5;

int PGM3 = 6;
int PRV3 = 7;

int PGM4 = 8;
int PRV4 = 9;


BMD_SDITallyControl_I2C sdiTallyControl(0x6E);            // define the Tally object using I2C using the default shield address

// the setup function runs once when you press reset or power the board
void setup()
{
 Serial.begin(115200);
 
  sdiTallyControl.begin();                                 // initialize tally control
  sdiTallyControl.setOverride(true);                       // enable tally override

  pinMode(PGM1, INPUT_PULLUP);
  pinMode(PGM2, INPUT_PULLUP);
  pinMode(PGM3, INPUT_PULLUP);
  pinMode(PGM4, INPUT_PULLUP);
 
  pinMode(PRV1, INPUT_PULLUP);
  pinMode(PRV2, INPUT_PULLUP);
  pinMode(PRV3, INPUT_PULLUP);
  pinMode(PRV4, INPUT_PULLUP);

}

// the loop function runs over and over again forever
void loop()

  /// Some debug info to check if we have the right port             
  if(digitalRead(PGM1) == LOW){ Serial.println("PGM1"); }
  if(digitalRead(PGM2) == LOW){ Serial.println("PGM2"); }
  if(digitalRead(PGM3) == LOW){ Serial.println("PGM3"); }
  if(digitalRead(PGM4) == LOW){ Serial.println("PGM4"); }

  if(digitalRead(PRV1) == LOW){ Serial.println("PRV1"); }
  if(digitalRead(PRV2) == LOW){ Serial.println("PRV2"); }
  if(digitalRead(PRV3) == LOW){ Serial.println("PRV3"); }
  if(digitalRead(PRV4) == LOW){ Serial.println("PRV4"); }
  Serial.println();                                               // Print New Line
 
  // Use this delay only when you use the Serial Terminal for debug!!
  delay(250);                                             
 
 
  // turn tally ON    // Camera Number   // Program Tally    // Preview Tally
  sdiTallyControl.setCameraTally( 1, ( !digitalRead(PGM1)) , ( !digitalRead(PRV1)) );
  sdiTallyControl.setCameraTally( 2, ( !digitalRead(PGM2)) , ( !digitalRead(PRV2)) );
  sdiTallyControl.setCameraTally( 3, ( !digitalRead(PGM3)) , ( !digitalRead(PRV3)) );
  sdiTallyControl.setCameraTally( 4, ( !digitalRead(PGM4)) , ( !digitalRead(PRV4)) );

}

Re: Ursa Mini 4K tally

PostPosted: Mon Dec 03, 2018 4:30 am
by brianone20
Great info, thank you. Would it be possible to use a 3rd party mixer and the camera control unit? I have an ATEM switcher that is basically being used a "slave" to operate the paint functions in the software as well as the 4 bank CCU, however we want to use our existing switcher. I' am wondering if I generate a tally signal (not sure what format) of some kind, can it be integrated so that the camera control unit is effective still, however we add tally to that path as well? we are successfully running camera control through the SDI return lines, but tally is something we have yet to tackle. Any insight would be greatly appreciated by myself and many others to come I'm certain.

Re: Ursa Mini 4K tally

PostPosted: Tue Dec 04, 2018 12:28 pm
by Xtreemtec
Add the shield between the Atem output and the sdi districbution to the cameras.

Code: Select all
sdiTallyControl.setOverride(true);                       // enable tally override
Means it only affects the Tally data and will leave the CCU data unchanged.. So it will overwrite the Tally coming from the Atem with the Tally Data you generate from your own board. ;)

For control without an Atem you could look into the control panels of Skaarhoj. But you just might keep the Atem and buy the RCP controller for the Atem to have a nice integrated solution. :)

Re: Ursa Mini 4K tally

PostPosted: Mon Jan 21, 2019 8:09 pm
by brianone20
Xtreemtec wrote:Add the shield between the Atem output and the sdi districbution to the cameras.

Code: Select all
sdiTallyControl.setOverride(true);                       // enable tally override
Means it only affects the Tally data and will leave the CCU data unchanged.. So it will overwrite the Tally coming from the Atem with the Tally Data you generate from your own board. ;)

For control without an Atem you could look into the control panels of Skaarhoj. But you just might keep the Atem and buy the RCP controller for the Atem to have a nice integrated solution. :)


THANK YOU! This is great info and we appreciate your input!!

Re: Ursa Mini 4K tally

PostPosted: Thu Mar 30, 2023 11:39 am
by Wolf Schiebel
Hi,

sorry for asking a question in this quite old thread, but when i try to compile your code i get the following error:

Compilation error: no matching function for call to 'BMD::I2CPhysical<BMD::SDITallyControl>::I2CPhysical(int)'

I have an Arduino Uno Board and Arduino IDE on Win10

Whta could cause this problem?

Thanks and best regards,

Wolf

Re: Ursa Mini 4K tally

PostPosted: Thu Mar 30, 2023 3:38 pm
by Mike Ambrose
Do you have the SDK installed and the blackmagic library imported to your project?

Check out pages 9, 14, and 15:
https://documents.blackmagicdesign.com/ ... Manual.pdf

Re: Ursa Mini 4K tally

PostPosted: Fri Mar 31, 2023 7:09 am
by Wolf Schiebel
Thanks, i will check if everything is up to date and try again.

Re: Ursa Mini 4K tally

PostPosted: Fri Mar 31, 2023 7:29 am
by Wolf Schiebel
Mike Ambrose wrote:Do you have the SDK installed and the blackmagic library imported to your project?

Check out pages 9, 14, and 15:
https://documents.blackmagicdesign.com/ ... Manual.pdf



Thanks Mike, after updating the SDK and the library everything is running!