aitum.js
API Documentation
JS/TS library for Aitum's Public API. This library requires Aitum to be installed and running. You can read the API documentation here.
The main goal of this library is to provide an easy-to-use wrapper for using Aitum's public API, instead of having to spend the time implementing your own logic to make requests.
If you are looking for a more integrated way to do custom code with Aitum, please take a look at our Custom Code Wrapper project.
Installation
To install this module, please follow the steps below for your package manager of choice:
npm i -s aitum.js
yarn add aitum.js
Getting Started
To get started, import and instantiate the library via its get
method.
import { AitumJS } from 'aitum.js';
import { DeviceType } from 'aitum.js/lib/enums';
const lib = AitumJS.get();
const aitumDevice = (await lib.getDevices(DeviceType.Aitum))[0];
await aitumDevice.triggerRule('rule-id');
const obsDevice = (await lib.getDevices(DeviceType.OBS))[0];
await obsDevice.changeScene('my awesome scene');
Methods
NOTE: REWRITE IN PROGRESS, BELOW IS NOT COMPLETE AND MAY BE INCORRECT
The methods in this library correspond to the methods listed in the Public API documentation.
Devices
Getting Devices
There are multiple ways to filter
import { AitumJS } from 'aitum.js';
import { DeviceType } from 'aitum.js/lib/enums';
const lib = AitumJS.get();
const allOBSDevices = await lib.getDevices(DeviceType.OBSV5);
const singleOBSDevice = (await lib.getDevices(DeviceType.OBSV5, { host: 'aitum-host-id', name: 'device-name' }))[0];
OBS (Websocket 5+)
changeScene(scene: string)
- Change the current OBS scenechangeFilterVisibility(source: string, filter: string, enabled: boolean)
- Change a source filter's visibilitychangeSceneItemVisibility(scene: string, item: string, visible: boolean)
- Change the visibility of a specific source in a scenemuteAudio(input: string, mute: boolean)
- Change the mute state of an audio deviceplayPauseMedia(source: string, play: boolean)
- Change the play/pause state of a media sourcerestartMedia(source: string)
- Restart a media sourcestopMedia(source: string)
- Stop a media sourcenextMediaItem(source: string)
- Play the next media itempreviousMediaItem(source: string)
- Play the previous media itemrefreshBrowserSource(source: string)
- Refresh a browser sourcesetRecording(state: boolean)
- Set recording statetoggleRecording()
- Toggle recording statesetStreaming(state: boolean)
- Set streaming statetoggleStreaming()
- Toggle streaming statesetReplayBuffer(state: boolean)
- Set replay buffer statetoggleReplayBuffer()
- Toggle replay buffer statesaveReplayBuffer()
- Save current replay buffersendCustomMessage(data: object)
- Send a custom obs-websocket
message. This is usually not very useful unless you have code interfacing directly with obs-websocketsetBrowserSourceProperties(source: string, options: { url?: string, fps?: number, routeAudio?: boolean })
- Set browser source propertiessetDisplaySourceProperties(source: string, options: { display?: number, showCursor?: boolean })
- Set display source propertiessetTextSourceProperties(source: string, options: { text?: string, dropShadow?: boolean, outline?: boolean, antiAliasing?: boolean, wordWrap?: boolean, colour?: string, colourTwo?: string })
- Set text source propertiessetSourceFilterProperties(source: string, filter: string, options: object)
- Set source filter propertiessendVendorRequest(vendorName: string, eventType: string, eventData?: object)
- Send vendor request
MIDI
noteOn(channel: number, note: number, velocity: number)
- Send a Note OnnoteOff(channel: number, note: number, velocity: number)
- Send a Note OffnoteOnOff(channel: number, note: number, velocity: number, hold: number)
- Send a Note On followed by a Note OffcontrolChange(channel: number, value: number, controller: number)
- Send a Control Changeprogram(channel: number, number: number)
- Send a ProgrampolyAftertouch(channel: number, note: number, velocity: number)
- Send a Poly AftertouchchannelAftertouch(channel: number, pressure: number)
- Send a Channel Aftertouchpitch(channel: number, value: number)
- Send a Pitchposition(value: number)
- Send a Positionselect(song: number)
- Send a Selectstart()
- Send a Startcontinue()
- Send a Continuestop()
- Send a StopactiveSense()
- Send an Active Sensereset()
- Send a Reset
TWITCH
startCommercial(length: number)
- Start a CommercialcreateStreamMarker()
- Create a Stream MarkerstartPoll(title: string, duration: number, choices: string[], pointsVoting = false, pointsPerVote?: number)
- Starts a new PollendPoll()
- Ends a poll if one is activegetPoll()
- Gets the active poll if one is runningannouncement(message: string, colour?: TwitchChatAnnounceColour)
- Sends an announcementsetBanStatus(ban: boolean, username: string, reason?: string)
- Ban/unbans a useremoteOnly(enabled: boolean)
- Sets emote only modefollowerOnly(enabled: boolean)
- Sets follower only modesetVIP(vip: boolean, username: string)
- VIPs/unVIPs a userraid(username: string)
- Starts a raidsubOnlyMode(enabled: boolean)
- Sets subscriber only modesetTimeoutStatus(timeout: boolean, username: string, reason?: string)
- Timeouts/untimeouts a userclearChat()
- Clear chatsetModStatus(mod: boolean, username: string)
- Mod/unmod a useruniqueChat(enabled: boolean)
- Sets unique chat modesendMessage(message: string)
- Sends a message as the broadcastersetTitle(title: string)
- Sets the stream title
AITUM
triggerRule(rule: string | Rule)
- Trigger a rule in Aitum. (Note: When triggering a rule with this method, any triggers and checks in the rule are ignored, and the actions are immediately executed)playSound(path: string, volume: number)
- Play a sound in AitumstopAllSounds()
- Stop all sounds playing in Aitum
ELGATO
setState(on: boolean)
- Set the light statesetColour(colour: string)
- Set the light coloursetColourTemperature(temperature: number, brightness: number)
- Set the light colour temperature
OSC
float(address: string, value: number)
- Send a Floatinteger(address: string, value: number)
- Send a Integerstring(address: string, value: string)
- Send a Stringboolean(address: string, value: boolean)
- Send a Booleannull(address: string)
- Send a Null
Rules
TODO
Global Variables
TODO
Utilities
Logger
TODO - In built logger
HTTP Calls
TODO - Easy access to axios
JSON Support
TODO - Examples of how to serialise and deserialise JSON in JS
TypeScript support
This library is designed with TypeScript in mind, so provides various TypeScript interface definitions for objects returned by methods in this library. You can import them from ./interfaces/
.