Skip to content

Commit

Permalink
Merge pull request #44 from SteffeyDev/code-base-refactor
Browse files Browse the repository at this point in the history
Full Code Base Refactor
  • Loading branch information
danielbuechele authored Oct 16, 2017
2 parents c5a0074 + 45f22dd commit ef1128b
Show file tree
Hide file tree
Showing 30 changed files with 2,001 additions and 4,656 deletions.
17 changes: 12 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# AtemOSC v2.4.7

## Features
This is a macOS application, providing an interface to control an ATEM video switcher via OSC. Additionally, the control of a tally-light interface via Arduino is provided.
This is a macOS application, providing an interface to control an ATEM video switcher via OSC.

![atemOSC](https://github.com/danielbuechele/atemOSC/raw/master/atemOSC.jpg)

The current version is built for Mac OS 10.12 SDK (as of version 2.4.7). A compiled and runnable version of the atemOSC is included. Caution: This software lacks of many usability features (like input validation).
The current version is built for Mac OS 10.12 SDK (as of version 2.4.7). A compiled and runnable version of the atemOSC is included.

----------

Expand Down Expand Up @@ -42,6 +42,7 @@ The current version is built for Mac OS 10.12 SDK (as of version 2.4.7). A compi
- **Media 2** `/atem/program/12`

For preview selection `/atem/preview/$i` can be used.
Feedback: Enabled for all values


### Transition Control
Expand All @@ -59,13 +60,15 @@ To set the transition type of the Auto transition:
- **Stinger** `/atem/transition/set-type/sting`
- **DVE** `/atem/transition/set-type/dve`

Feedback: None

### Auxiliary Source Selection

- **Set Aux $i source to $x** `/atem/aux/$i $x`
- Where `$x` is a valid program source, and can be 1-6 depending on the capability of your ATEM switcher. Check the Help Menu for the correct values.
- Where `$x` is an integer value that is a valid program source, and can be 1-6 depending on the capability of your ATEM switcher. Check the Help Menu for the correct values.
- e.g. `/atem/aux/1 1` to set Aux 1 output to source 1 (Camera 1)

Feedback: None

### Upstream Keyers

Expand All @@ -76,7 +79,7 @@ To set the transition type of the Auto transition:
- e.g. If USK 1 is on air, `/atem/set-nextusk/1 1` will untie USK 1 so that it remains on, while `/atem/set-nextusk/1 0` will tie USK 1 so that it will go off air after the next transition.

Where `$i` can be 1, 2, 3, or 4 depending on the capability of your ATEM switcher
Feedback: Enabled for '/atem/nextusk' only

### Downstream Keyers

Expand All @@ -92,6 +95,7 @@ Where `$i` can be 1, 2, 3, or 4 depending on the capability of your ATEM switche
- e.g. If DSK1 is on air, `/atem/dsk/set-next/1 1` will untie DSK1 so that it remains on, while `/atem/dsk/set-next/1 0` will tie DSK1 so that it will go off air after the next transition.

Where `$i` can be 1, 2, 3, or 4 depending on the capability of your ATEM switcher
Feedback: Enabled for '/atem/dsk/on-air' and '/atem/dsk/tie' only


### Media Players
Expand All @@ -103,6 +107,7 @@ Where `$i` can be 1, 2, 3, or 4 depending on the capability of your ATEM switche
- Where `$i` can be 1 or 2, and `$x` can be 1-20 depending on the capability of your ATEM switcher
- e.g. `/atem/mplayer/1/still/5`

Feedback: None

### SuperSource (when available)

Expand All @@ -112,6 +117,7 @@ Where `$i` can be 1, 2, 3, or 4 depending on the capability of your ATEM switche
- Where `$x` is a valid program source. Check the Help Menu for the correct values.
- Other options are available. Check the Help Menu in the app for the full list.

Feedback: None

### Macros

Expand All @@ -131,6 +137,8 @@ Where `$i` can be 1, 2, 3, or 4 depending on the capability of your ATEM switche
- Run the Macro at index $i: `/atem/macros/$i/run`
- Returns an `int` of `0|1` to indicate whether the requested Macro was executed. A `0` will be returned if the Macro is invalid, or does not exist

Feedback: On-Request (you must send command to get feedback)

----------

## Tested Use Cases
Expand All @@ -147,5 +155,4 @@ This software has been used successfuly with [ControllerMate](http://www.ordered

- The code is based on the *SwitcherPanel*-Democode (Version 3.5) provided by Blackmagic.
- [VVOSC](http://code.google.com/p/vvopensource/) is used as OSC-framework.
- [AMSerialPort](https://github.com/smokyonion/AMSerialPort) is used for Arduino-connection
- Program icon based heavily on the ATEM Software Control icon by [Blackmagic Design](http://www.blackmagicdesign.com).
23 changes: 0 additions & 23 deletions arduino-tally/arduino-tally.ino

This file was deleted.

85 changes: 85 additions & 0 deletions atemOSC/AppDelegate.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
/* -LICENSE-START-
** Copyright (c) 2011 Blackmagic Design
**
** Permission is hereby granted, free of charge, to any person or organization
** obtaining a copy of the software and accompanying documentation covered by
** this license (the "Software") to use, reproduce, display, distribute,
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
** DEALINGS IN THE SOFTWARE.
** -LICENSE-END-
*/

#import "BMDSwitcherAPI.h"
#import "VVOSC/VVOSC.h"
#import <vector>

#import <Cocoa/Cocoa.h>

#import "FeedbackMonitors.h"

@class OSCAddressPanel;
@class OSCReceiver;

@interface AppDelegate : NSObject <NSApplicationDelegate>
{
NSWindow *window;

IBMDSwitcherDiscovery* mSwitcherDiscovery;
IBMDSwitcher* mSwitcher;
IBMDSwitcherKeyFlyParameters* mDVEControl;
SwitcherMonitor* mSwitcherMonitor;
DownstreamKeyerMonitor* mDownstreamKeyerMonitor;
TransitionParametersMonitor* mTransitionParametersMonitor;

OSCReceiver* mOscReceiver;
OSCManager* manager;

IBOutlet OSCAddressPanel* helpPanel;
IBOutlet NSTextView* logTextView;
}

@property (readonly) std::vector<IBMDSwitcherSuperSourceBox*> mSuperSourceBoxes;
@property (readonly) std::vector<IBMDSwitcherInputAux*> mSwitcherInputAuxList;
@property (readonly) IBMDSwitcherStills* mStills;
@property (readonly) IBMDSwitcherInputSuperSource* mSuperSource;
@property (readonly) IBMDSwitcherMacroPool* mMacroPool;
@property (readonly) IBMDSwitcherMacroControl* mMacroControl;
@property (assign, readonly) OSCInPort* inPort;
@property (assign, readonly) OSCOutPort* outPort;
@property (readonly) std::vector<IBMDSwitcherMediaPlayer*> mMediaPlayers;
@property (readonly) IBMDSwitcherMediaPool* mMediaPool;
@property (readonly) std::vector<IBMDSwitcherKey*> keyers;
@property (readonly) std::vector<IBMDSwitcherDownstreamKey*> dsk;
@property (readonly) IBMDSwitcherTransitionParameters* switcherTransitionParameters;
@property (readonly) MixEffectBlockMonitor* mMixEffectBlockMonitor;
@property (readonly) IBMDSwitcherMixEffectBlock* mMixEffectBlock;
@property (readonly) bool isConnectedToATEM;
@property (strong) IBOutlet NSWindow* window;
@property (strong) id activity;

- (void)connectBMD;
- (void)portChanged:(int)inPortValue out:(int)outPortValue ip:(NSString *)outIpStr;
- (IBAction)githubPageButtonPressed:(id)sender;

- (void)switcherConnected;
- (void)switcherDisconnected;

- (void)logMessage:(NSString *)message;

@end
Loading

0 comments on commit ef1128b

Please sign in to comment.