- Posts: 2
- Joined: Tue May 04, 2021 7:01 pm
- Real Name: Christian Schultz
The code just connects to an ATEM Mini, turn the MIC 1 input on and exits.
- Code: Select all
using System;
using System.Runtime.InteropServices;
using System.Threading;
using BMDSwitcherAPI;
namespace ATEMSDKTest
{
class Program
{
static void Main(string[] args)
{
IBMDSwitcher switcherInfo = null;
IBMDSwitcherDiscovery switcherDiscovery = new CBMDSwitcherDiscovery();
IBMDSwitcherMixEffectBlock mixEffectBlock1 = null;
_BMDSwitcherConnectToFailure failReason = 0;
IBMDSwitcherFairlightAudioMixer m_audiomixer;
IntPtr audioIteratorPtr;
Guid audioIteratorIID = typeof(IBMDSwitcherFairlightAudioInputIterator).GUID;
IntPtr sourceIteratorPtr;
Guid sourceIteratorIID = typeof(IBMDSwitcherFairlightAudioSourceIterator).GUID;
IBMDSwitcherFairlightAudioInputIterator audioIterator = null;
IBMDSwitcherFairlightAudioSourceIterator sourceIterator = null;
string switcherName;
if (switcherDiscovery == null)
Environment.Exit(0);
try
{
switcherDiscovery.ConnectTo("192.168.45.110", out switcherInfo, out failReason);
}
catch(COMException)
{
switch (failReason)
{
case _BMDSwitcherConnectToFailure.bmdSwitcherConnectToFailureNoResponse:
Environment.Exit(0);
break;
case _BMDSwitcherConnectToFailure.bmdSwitcherConnectToFailureIncompatibleFirmware:
Environment.Exit(0);
break;
default:
Environment.Exit(0);
break;
}
}
switcherInfo.GetProductName(out switcherName);
Console.WriteLine("Conected to: {0}", switcherName);
// Don't ask me why, but without this delay the code below does not work
Thread.Sleep(100);
m_audiomixer = (IBMDSwitcherFairlightAudioMixer)switcherInfo;
m_audiomixer.CreateIterator(ref audioIteratorIID, out audioIteratorPtr);
if (audioIteratorPtr != null)
audioIterator = (IBMDSwitcherFairlightAudioInputIterator)Marshal.GetObjectForIUnknown(audioIteratorPtr);
if (audioIterator != null)
{
IBMDSwitcherFairlightAudioInput audio;
// By trial and error, I figured out that the MIC 1 input has the ID=1301, and the MIC 2 ID is 1302
audioIterator.GetById(1301, out audio);
if (audio != null)
{
audio.CreateIterator(ref sourceIteratorIID, out sourceIteratorPtr);
if (sourceIteratorPtr != null)
sourceIterator = (IBMDSwitcherFairlightAudioSourceIterator)Marshal.GetObjectForIUnknown(sourceIteratorPtr);
if (sourceIterator != null)
{
IBMDSwitcherFairlightAudioSource source;
sourceIterator.Next(out source);
source.SetMixOption(_BMDSwitcherFairlightAudioMixOption.bmdSwitcherFairlightAudioMixOptionOn);
}
}
}
}
}
}