You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: packages/documentation/docs/for-developers/device-integrations/tsr-plugins.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ Some useful npm scripts you may wish to copy are:
27
27
28
28
There are a few key properties that your plugin must conform to, the rest of the structure and how it gets generated is up to you.
29
29
30
-
1. It must be possible to `require(...)` your plugin folder. The resuling js must contain an export of the format `export const Devices: Record<string, DeviceEntry> = {}`
30
+
1. It must be possible to `require(...)` your plugin folder. The resulting js must contain an export of the format `export const Devices: Record<string, DeviceEntry> = {}`
31
31
This is how the TSR process finds the entrypoint for your code, and allows you to define multiple device types.
32
32
33
33
2. There must be a `manifest.json` file at the root of your plugin folder. This should contain json in the form `Record<string, TSRDevicesManifestEntry>`
Copy file name to clipboardExpand all lines: packages/documentation/docs/user-guide/features/prompter.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,7 +46,7 @@ The prompter can be controlled by different types of controllers. The control mo
46
46
|`?mode=shuttlewebhid`| Controlled by a Contour Design ShuttleXpress, using the browser's WebHID API [See configuration details](prompter.md#control-using-contour-shuttlexpress-via-webhid)|
47
47
|`?mode=pedal`| Controlled by any MIDI device outputting note values between 0 - 127 of CC notes on channel 8. Analogue Expression pedals work well with TRS-USB midi-converters. [See configuration details](prompter.md#control-using-midi-input-modepedal)|
48
48
|`?mode=joycon`| Controlled by Nintendo Switch Joycon, using the HTML5 GamePad API. [See configuration details](prompter.md#control-using-nintendo-joycon-gamepad)|
49
-
|`?mode=xbox`| Controlled by Xbox controller, using the HTML5 GamePad API. [See configuration details](prompter.md#control-using-xbox-controller-modexbox)|
49
+
|`?mode=xbox`| Controlled by Xbox controller, using the HTML5 GamePad API. [See configuration details](prompter.md#control-using-xbox-controller-modexbox)|
50
50
51
51
#### Control using mouse \(scroll wheel\)
52
52
@@ -175,16 +175,16 @@ This mode uses the browsers Gamapad API and polls connected Joycons for their st
175
175
176
176
The Joycons can operate in 3 modes, the L-stick, the R-stick or both L+R sticks together. Reconnections and jumping between modes works, with one known limitation: **Transition from L+R to a single stick blocks all input, and requires a reconnect of the sticks you want to use.** This seems to be a bug in either the Joycons themselves or in the Gamepad API in general.
177
177
178
-
| Query parameter | Type | Description | Default |
|`joycon_speedMap`| Array of numbers | Speeds to scroll by \(px. pr. frame - approx 60fps\) when scrolling forwards. The beginning of the forwards-range maps to the first number in this array, and the end of the forwards-range map to the end of this array. All values in between are being interpolated in a spline curve. |`[1, 2, 3, 4, 5, 8, 12, 30]`|
181
-
|`joycon_reverseSpeedMap`| Array of numbers | Same as `joycon_speedMap` but for the backwards range. |`[1, 2, 3, 4, 5, 8, 12, 30]`|
182
-
|`joycon_rangeRevMin`| number | The end of the backwards-range, full speed backwards. |`-1`|
183
-
|`joycon_rangeNeutralMin`| number | The beginning of the backwards-range. |`-0.25`|
184
-
|`joycon_rangeNeutralMax`| number | The minimum input to run forward, the start of the forward-range \(min speed\). This is also the end of any "deadband" you want filter out before starting moving forwards. |`0.25`|
185
-
|`joycon_rangeFwdMax`| number | The maximum input, the end of the forward-range \(max speed\)|`1`|
186
-
|`joycon_rightHandOffset`| number | A ratio to increase or decrease the R Joycon joystick sensitivity relative to the L Joycon. |`1.4`|
187
-
|`joycon_invertJoystick`| 0 / 1 | Invert the joystick direction. When enabled, pushing the joystick forward scrolls up instead of down. |`1`|
181
+
|`joycon_reverseSpeedMap`| Array of numbers | Same as `joycon_speedMap` but for the backwards range. |`[1, 2, 3, 4, 5, 8, 12, 30]`|
182
+
|`joycon_rangeRevMin`| number | The end of the backwards-range, full speed backwards. |`-1`|
183
+
|`joycon_rangeNeutralMin`| number | The beginning of the backwards-range. |`-0.25`|
184
+
|`joycon_rangeNeutralMax`| number | The minimum input to run forward, the start of the forward-range \(min speed\). This is also the end of any "deadband" you want filter out before starting moving forwards. |`0.25`|
185
+
|`joycon_rangeFwdMax`| number | The maximum input, the end of the forward-range \(max speed\)|`1`|
186
+
|`joycon_rightHandOffset`| number | A ratio to increase or decrease the R Joycon joystick sensitivity relative to the L Joycon. |`1.4`|
187
+
|`joycon_invertJoystick`| 0 / 1 | Invert the joystick direction. When enabled, pushing the joystick forward scrolls up instead of down. |`1`|
188
188
189
189
-`joycon_rangeNeutralMin` has to be greater than `joycon_rangeRevMin`
190
190
-`joycon_rangeNeutralMax` has to be greater than `joycon_rangeNeutralMin`
@@ -241,11 +241,11 @@ The controller can be connected via Bluetooth or USB. **Note:** On macOS, Xbox c
241
241
242
242
**Configuration parameters:**
243
243
244
-
| Query parameter | Type | Description | Default |
|`xbox_speedMap`| Array of numbers | Speeds to scroll by (px per frame, ~60fps) when scrolling forwards. Values are interpolated using a spline curve based on trigger pressure. |`[2, 3, 5, 6, 8, 12, 18, 45]`|
247
247
|`xbox_reverseSpeedMap`| Array of numbers | Same as `xbox_speedMap` but for the backwards range (left trigger). |`[2, 3, 5, 6, 8, 12, 18, 45]`|
248
-
|`xbox_triggerDeadZone`| number | Dead zone for the triggers, to prevent accidental scrolling. Value between 0 and 1. |`0.1`|
248
+
|`xbox_triggerDeadZone`| number | Dead zone for the triggers, to prevent accidental scrolling. Value between 0 and 1. |`0.1`|
249
249
250
250
You can turn on `?debug=1` to see how your trigger input maps to scroll speed.
Copy file name to clipboardExpand all lines: packages/documentation/versioned_docs/version-1.52.0/for-developers/data-model.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ In every case, any layout changes and any scheduled cleanup are performed by the
18
18
19
19
This category of collections is rather loosely defined, as it ends up being everything that doesn't belong somewhere else
20
20
21
-
This consists of anything that is configurable from the Sofie UI, anything needed soley for the UI and some other bits. Additionally, there are some collections which are populated by other portions of a Sofie system, such as by Package Manager, through an API over DDP.
21
+
This consists of anything that is configurable from the Sofie UI, anything needed solely for the UI and some other bits. Additionally, there are some collections which are populated by other portions of a Sofie system, such as by Package Manager, through an API over DDP.
22
22
Currently, there is not a very clearly defined flow for modifying these documents, with the UI often making changes directly with minimal or no validation.
23
23
24
24
This includes:
@@ -82,7 +82,7 @@ Some of these collections are used by Package Manager to initiate work, while ot
82
82
83
83
This category of collections is owned by the playout [worker threads](./worker-threads-and-locks.md), and is used to model the playout of a Rundown or set of Rundowns.
84
84
85
-
During the final stage of an ingest operation, there is a period where the ingest worker aquires a `PlaylistLock`, so that it can ensure that the RundownPlaylist the Rundown is a part of is updated with any necessary changes following the ingest operation. During this lock, it will also attempt to [sync any ingest changes](./for-blueprint-developers/sync-ingest-changes) to the PartInstances and PieceInstances, if supported by the blueprints.
85
+
During the final stage of an ingest operation, there is a period where the ingest worker acquires a `PlaylistLock`, so that it can ensure that the RundownPlaylist the Rundown is a part of is updated with any necessary changes following the ingest operation. During this lock, it will also attempt to [sync any ingest changes](./for-blueprint-developers/sync-ingest-changes) to the PartInstances and PieceInstances, if supported by the blueprints.
86
86
87
87
As before, Meteor is allowed to write to these collections as part of migrations, and cleaning up old documents.
88
88
@@ -127,6 +127,6 @@ Our solution to some of this early on was to not regenerate certain Parts when r
127
127
128
128
At this point in time, Adlib Actions did not exist in Sofie. They are able to change almost every property of a Part of Piece that ingest is able to define, which makes the resetting process harder.
129
129
130
-
PartInstances and PieceInstances were added as a way for us to make a copy of each Part and Piece, as it was selected for playout, so that we could allow ingest without risking affecting playout, and to simplify the cleanup performed. The PartInstances and PieceInstances are our record of how the Rundown was played, which we can utilise to output metadata such as for chapter markers on a web player. In earlier versions of Sofie this was tracked independently with an `AsRunLog`, which resulted in odd issues such as having `AsRunLog` entries which refered to a Part which no longer existed, or whose content was very different to how it was played.
130
+
PartInstances and PieceInstances were added as a way for us to make a copy of each Part and Piece, as it was selected for playout, so that we could allow ingest without risking affecting playout, and to simplify the cleanup performed. The PartInstances and PieceInstances are our record of how the Rundown was played, which we can utilise to output metadata such as for chapter markers on a web player. In earlier versions of Sofie this was tracked independently with an `AsRunLog`, which resulted in odd issues such as having `AsRunLog` entries which referred to a Part which no longer existed, or whose content was very different to how it was played.
131
131
132
132
Later on, this separation has allowed us to more cleanly define operations as ingest or playout, and allows us to run them in parallel with more confidence that they won't accidentally wipe out each others changes. Previously, both ingest and playout operations would be modifying documents in the Piece and Part collections, making concurrent operations unsafe as they could be modifying the same Part or Piece.
Copy file name to clipboardExpand all lines: packages/documentation/versioned_docs/version-1.52.0/for-developers/device-integrations/intro.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Introduction
2
2
3
-
Device integrations in Sofie are part of the Timeline State Resolver (TSR) library. A device integration has a couple of responsibilites in the Sofie eco system. First and foremost it should establish a connection with a foreign device. It should also be able to convert Sofie's idea of what the device should be doing into commands to control the device. And lastly it should export interfaces to be used by the blueprints developer.
3
+
Device integrations in Sofie are part of the Timeline State Resolver (TSR) library. A device integration has a couple of responsibilities in the Sofie eco system. First and foremost it should establish a connection with a foreign device. It should also be able to convert Sofie's idea of what the device should be doing into commands to control the device. And lastly it should export interfaces to be used by the blueprints developer.
4
4
5
5
In order to understand all about writing TSR integrations there are some concepts to familiarise yourself with, in this documentation we will attempt to explain these.
Copy file name to clipboardExpand all lines: packages/documentation/versioned_docs/version-1.52.0/for-developers/for-blueprint-developers/lookahead.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,7 +38,7 @@ export enum LookaheadMode {
38
38
}
39
39
```
40
40
41
-
If undefined, `lookaheadMaxSearchDistance` currently has a default distance of 10 parts. This number was chosen arbitrarily, and could change in the future. Be careful when choosing a distance to not set it too high. All the Pieces from the parts being searched have to be loaded from the database, which can come at a noticable cost.
41
+
If undefined, `lookaheadMaxSearchDistance` currently has a default distance of 10 parts. This number was chosen arbitrarily, and could change in the future. Be careful when choosing a distance to not set it too high. All the Pieces from the parts being searched have to be loaded from the database, which can come at a noticeable cost.
42
42
43
43
If you are doing [AB Playback](./ab-playback.md), or performing some other processing of the timeline in `onTimelineGenerate`, you may benefit from increasing the value of `lookaheadDepth`. In the case of AB Playback, you will likely want to set it to the number of players available in your pool.
Copy file name to clipboardExpand all lines: packages/documentation/versioned_docs/version-1.52.0/for-developers/for-blueprint-developers/manipulating-ingest-data.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ At times it can be useful to manipulate this data before it gets passed into the
7
7
8
8
A new method `processIngestData` was added to transform the `NRCSIngestRundown` into a `SofieIngestRundown`. The types of the two are the same, so implementing the `processIngestData` method is optional, with the default being to pass through the NRCS rundown unchanged. (There is an exception here for MOS, which is explained below).
9
9
10
-
The basic implementation of this method which simply propogates nrcs changes is:
10
+
The basic implementation of this method which simply propagates nrcs changes is:
Copy file name to clipboardExpand all lines: packages/documentation/versioned_docs/version-1.52.0/for-developers/for-blueprint-developers/part-and-piece-timings.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -131,7 +131,7 @@ const inTransition = {
131
131
132
132
Pieces with an infinite lifespan (ie, not `lifespan: PieceLifespan.WithinPart`) get handled differently to other pieces.
133
133
134
-
Only one pieceGoup is created for an infinite Piece which is present in multiple of the current, next and previous Parts.
134
+
Only one pieceGroup is created for an infinite Piece which is present in multiple of the current, next and previous Parts.
135
135
The Piece calculates and tracks its own started playback times, which is preserved and reused in future takes. On the timeline it lives outside of the partGroups, but still gets the same caps applied when appropriate.
0 commit comments