Skip to content

Commit d0c461b

Browse files
Add docs (#1)
1 parent d32332d commit d0c461b

File tree

79 files changed

+2260
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+2260
-0
lines changed

.github/workflows/docs.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: ci
2+
on:
3+
push:
4+
branches:
5+
- main
6+
paths:
7+
- docs/**
8+
- mkdocs.yml
9+
permissions:
10+
contents: write
11+
jobs:
12+
deploy:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v4
16+
- name: Configure Git Credentials
17+
run: |
18+
git config user.name github-actions[bot]
19+
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
20+
21+
- uses: actions/setup-python@v5
22+
with:
23+
python-version: 3.x
24+
25+
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
26+
- uses: actions/cache@v4
27+
with:
28+
key: mkdocs-material-${{ env.cache_id }}
29+
path: .cache
30+
restore-keys: |
31+
mkdocs-material-
32+
33+
- run: pip install mkdocs-material
34+
35+
- run: mkdocs gh-deploy --force

docs/allocation-algorithm.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# The allocation algorithm
2+
3+
[Audio device orchestration](index.md#what-is-orchestration) is the concept of using multiple connected devices to play back an audio experience. It is capable of flexible, adaptable sound reproduction that takes into account the available loudspeaker devices.
4+
5+
In our orchestration system, audio objects are allocated to devices by an *allocation algorithm*. The allocations depend on:
6+
7+
* the [behaviours](audio.md#behaviours) that you've attached to each object;
8+
* the properties of the available devices; and
9+
* [control](controls.md) values that the listener has set.
10+
11+
Every time that some of this information changes, the objects are processed one at a time, in the order in which they appear in the [audio object table](audio.md#audio-object-table).
12+
13+
For each object, each available device is categorised as *preferred*, *allowed*, or *prohibited*. Devices can be given more than one of these labels, but in the final stage, any devices with a *prohibited* label cannot be used for the object.
14+
15+
In the final device selections:
16+
17+
* an object with the *All applicable devices* fixed behaviour setting will be allocated to all remaining *preferred* and *allowed* devices;
18+
19+
* an object with the *One device only* fixed behaviour setting will be assigned to a single device selected at random from any *preferred* devices, or from any *allowed* devices if there are no *preferred* devices;
20+
21+
* if there are no *preferred* or *allowed* devices, an object will not be allocated during that particular run of the allocation algorithm.
22+
23+
This gives a great degree of flexibility in how objects are assigned to devices, and means that the reproduction can adapt to any number of devices whilst still being controlled by you as the content producer.
24+
25+
## Change management
26+
27+
As noted above, the allocation algorithm runs every time there is a change in some of the information it uses (for example, if a new device is added, a device drops out, or the listener uses a control). This means that the experience is flexible and adaptable.
28+
29+
In some circumstances, there is an element of randomness to audio object allocations. If more than one device is *allowed* or *preferred*, but the object is only allowed into one device, then a random device will be selected. And this might change each time the allocation algorithm runs. Objects might even drop in and out as the available devices change.
30+
31+
In certain situations, that's the desired behaviour. But if you want to encourage consistency in allocations (for example, keeping an object in the same device wherever possible), a [*Change management behaviour*](custom-behaviours.md#change-management) can be added. This gives the producer much greater control of exactly what happens to the objects when there is some change.
32+
33+
If no *Change management behaviour* is applied to an object, it will be able to stop and start freely and will be allocated to any suitable devices as described above. See the [*Change management behaviour*](custom-behaviours.md#change-management) documentation for more information on how this can be customised.

docs/appearance.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Appearance page
2+
3+
On the Appearance page, you can make settings to customise the appearance of your prototype application (see the [prototype application](prototype.md) documentation for more information about the different components).
4+
5+
## Text
6+
7+
In the top row of text fields, you can give your application a **title**, **subtitle**, and an **introduction** paragraph. The title and subtitle will be visible on every page of the prototype application. The introduction text will only be visible on the home page.
8+
9+
In the second row, you can set labels for the **start** and **join buttons**. The defaults are *Start new session* and *Join existing session* respectively.
10+
11+
## Accent colour
12+
13+
The **accent colour** is used for various components of the prototype application, including buttons and the play bar. You can specify the colour with a [hex triplet](https://en.wikipedia.org/wiki/Web_colors#Hex_triplet), or use one of the preset colours.
14+
15+
<a name="cover-image"></a>
16+
## Cover image
17+
18+
The **cover image** is shown on the prototype application home page and all playing pages. Click "Add cover image", select an image file, then click "Open".
19+
20+
* You should use a square image, ideally at least 600 x 600 pixels. Images that aren't squares will be cropped to square.
21+
* Images should use the JPEG (`.jpg` or `.jpeg`) or PNG (`.png`) formats.
22+
23+
The prototype application will use the default image if you don't add one here.
24+
25+
!!! Tip
26+
27+
* The prototype application is designed to work with a square image, but will display rectangular images too.
28+
29+
* The width of the displayed image will be 600 pixels. Smaller images will lack resolution, and larger images will be scaled.
30+
31+
32+
When you've imported a cover image, you'll see a text box labelled *Image alt text*. Use this to add **alternative text** to the image. Alternative (or alt) text is important for accessible design; among other benefits, it enables those using screen readers to better understand the page.
33+
34+
!!! Tip
35+
Good alt text provides a concise but complete description of the image. See, for example, the [BBC mobile accessibility guidelines](https://www.bbc.co.uk/guidelines/futuremedia/accessibility/mobile/text-equivalents/alternatives-for-non-text-content) for more details.
36+
37+
<a name="interface-options"></a>
38+
## Interface options
39+
40+
There are three customisable aspects of the prototype application in the *Interface options* section.
41+
42+
* **Display list of active audio objects.** The prototype application can display the filenames of the audio objects that are currently being played on each device. This is helpful for checking that your [behaviours](audio.md#behaviours) are acting how you expect without necessarily needing to listen to the full piece. This is turned on by default.
43+
44+
* **Enable calibration**. The prototype application can include a calibration mode that enables the listener to adjust for a time offset between the main and aux devices. Calibration mode is accessed through the instructions page; see the [prototype application](prototype.md#calibration-mode) documentation for a description of how it works. Calibration is turned off by default.
45+
46+
!!! Tip
47+
The orchestrated audio system underlying the prototype application uses a cloud-based synchronisation server to keep devices in sync, but this can't account for delay introduced by the software and hardware on individual devices. On some devices, this can be negligible, but on others, it's large enough (~200 ms) to make orchestration unsuitable for some types of sound that require very accurate synchronisation (such as rhythmic music). The manual calibration mode can help to correct for this, potentially making orchestration suitable for more experiences.
48+
49+
* **Show Play and Pause buttons on aux devices**. When this option is checked, the aux devices will have a play/pause button allowing them to control the session playback. By default (i.e. when this option is unchecked), playback can only be controlled from the main device.
50+
51+
## Audio compression
52+
53+
Audio compression can be applied to the output of aux devices. This might be useful if the main device has significantly better or louder loudspeakers than the aux devices (for example, if the aux devices are all mobile phones), and it's consequently beneficial to increase the playback volume of quiet audio that's sent to aux devices.
54+
55+
The compressor works by reducing the level of the loud parts of the sound (those above the *threshold*) and not affecting the quiet parts. Then, the level of the whole signal is increased—so there's less dynamic range in the signal, but the quiet parts are relatively louder.
56+
57+
The compressor has two customisable parameters.
58+
59+
* **Compressor ratio** is the amount of level reduction applied to the audio above the *threshold* level. A ratio of 2 means that a 2 dB increase in input level produces a 1 dB increase in output level.
60+
61+
* **Compressor threshold** is a decibel value above which the compression will start taking effect.
62+
63+
To disable compression, set the *Compressor threshold* to 0. This is the default value.
64+
65+
!!! Tip
66+
* Audio compression is implemented by a Web Audio API [DynamicsCompressorNode](https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode).
67+
68+
* The compressor has auto make-up gain based on the threshold, ratio, and knee.
69+
70+
* The compressor uses the following settings.
71+
72+
* Attack time: 0.01 s.
73+
* Release time: 0.25 s.
74+
* Knee: 30 dB.
75+
76+
<a name="object-fade-out"></a>
77+
## Object fade out
78+
79+
This value sets the length (in seconds) of the linear fade out that is applied to an object when a change means that it is no longer allocated to a device by the [allocation algorithm](allocation-algorithm.md). By default, it is set to 0 seconds (i.e. the object will immediately stop playing).
80+
81+
!!! Tip
82+
After a change in object allocations, there can sometimes be a short delay before an object starts playing in a new device. Setting a fade out can help to mitigate the effects of this in some circumstances.

docs/audio.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Audio page
2+
3+
On the audio page, you can import audio files (prepared according to the [guidelines](preparing-audio.md)) and set up [behaviours](#behaviours) that define how each object should be allocated to devices. There are also some shortcuts to features from the [Monitoring page](monitoring.md).
4+
5+
Each sequence has its own set of audio files and behaviours. Switch between sequences by clicking the tabs (which are labelled with your sequence names).
6+
7+
<a name="adding-files"></a>
8+
## Adding and replacing audio files
9+
10+
To **add an initial set of audio files**, just click the "Add audio files" button. Find the files you want to add, select them, then press "Open". You'll see the audio files appear as rows in a table, with various options which are explained below.
11+
12+
You can **delete** single or multiple files by selecting the checkboxes for the files you'd like to delete, then pressing the delete button at the top right of the table.
13+
14+
You can also **replace** the full set of audio files by clicking "Replace all audio files".
15+
16+
!!! Tip
17+
When replacing audio files, if you select fewer new files than are already loaded, then any missing files will show errors (*"No audio file matches the object number"*). You'll need to manually delete these objects. It is only possible to import full sets of files.
18+
19+
!!! Error
20+
If you have any sequences with no audio files, you will not be able to preview or export the experience. There will be an error message on the [Export page](export.md) (*"No audio files have been added"*).
21+
22+
<a name="audio-object-table"></a>
23+
## The audio object table
24+
25+
Once you've imported your files, they'll appear as rows of the audio object table. In each row, you'll see a checkbox, the filename, a [panning](#panning) setting, two [fixed behaviours](fixed-behaviours.md), and an ["Add behaviour" button](#add-behaviour). These are detailed below. Any [behaviours](#behaviours) that you've added will also be shown in the table row.
26+
27+
<a name="panning"></a>
28+
## Panning
29+
30+
The current panning value for each object is shown in the object table row.
31+
32+
To change the panning, just click the current value, which will reveal a slider. You can either adjust the panning using the slider, or click the "L", "R", or "C" buttons for 100% left, 100% right, or centre panning respectively.
33+
34+
The panning cannot be changed for stereo objects.
35+
36+
!!! Tip
37+
See the [Preparing audio assets](preparing-audio.md#prepare-panning) page for information on automatic panning based on the filename.
38+
39+
!!! Info
40+
Panning is implemented by a Web Audio API [StereoPannerNode](https://developer.mozilla.org/en-US/docs/Web/API/StereoPannerNode) for browsers in which this is supported, and by other Web Audio API components that mimic the behaviour where the StereoPannerNode is not supported.
41+
42+
<a name="behaviours"></a>
43+
## Behaviours
44+
45+
Behaviours determine how each object should be allocated to devices. This lets you customise the listener experience, ensuring that it is flexible and can adapt to the number of connected devices and to settings that listeners make using [controls](controls.md).
46+
47+
There are four types of behaviour.
48+
49+
* [**Fixed behaviours**](fixed-behaviours.md) are always included for every object. They define the device roles and number of devices that objects can be allocated to. Fixed behaviours are shown as dropdown lists in the audio object table.
50+
* [**Control-linked behaviours**](control-linked-behaviours.md) are linked to any [controls](controls.md) that you've set up.
51+
* [**Custom behaviours**](custom-behaviours.md) give you more flexibility in deciding how the objects should be allocated.
52+
* The [**Image and effects behaviour**](image-behaviour.md) allows you to add timed images and effects, attached to audio objects, to the experience.
53+
54+
The four behaviour types are described in more detail in the linked documentation pages.
55+
56+
<a name="add-behaviour"></a>
57+
### Add behaviour button
58+
59+
The "Add behaviour" button is used to add behaviours to the objects. Clicking the button will reveal a dropdown list containing the behaviour options. Click the option you need to apply it to the object.
60+
61+
* The **control-linked behaviours** (which relate to any [controls](controls.md) that you have set up) appear at the top of the list with orange dots. You can only add one instance of each control-linked behaviour to each object. See [Control-linked behaviours](control-linked-behaviours.md) for more details.
62+
63+
* The **custom behaviours** appear after the control-linked behaviours. There are six custom behaviour types (*Preferred if*, *Allowed if*, *Prohibited if*, *Exclusive*, *Change management*, and *Mute if*), each with a different colour dot. See [Custom behaviours](custom-behaviours.md) for more details.
64+
65+
* The ***Images and effects*** behaviour appears after the custom behaviours. See [*Images and effects* behaviour](image-behaviour.md) for more details.
66+
67+
When you add a behaviour to an object, it will appear as a coloured box in the object's row of the audio object table.
68+
69+
### Editing and deleting behaviours
70+
71+
Behaviours that have editable parameters (all [control-linked behaviours](control-linked-behaviours.md), most [custom behaviours](custom-behaviours.md), and the [image and effects behaviour](image-behaviour.md)) will show an "editable" icon. Clicking on the behaviour will open its settings.
72+
73+
All [control-linked behaviours](control-linked-behaviours.md), [custom behaviours](custom-behaviours.md), and the [image and effects behaviour](image-behaviour.md) have a delete button ("X" icon) on the right hand side (you'll be asked to confirm that you want to delete the behaviour).
74+
75+
### Adding the same behaviour to multiple objects
76+
77+
The same behaviour can be added to multiple objects in one go. Select all of the objects to which you want to add the behaviour (using the checkboxes on the left hand side of the object table), then click the "Add behaviour" button (either above the audio object table, or on any of the selected objects).
78+
79+
<a name="audio-page-monitoring"></a>
80+
## Monitoring
81+
82+
*Audio Orchestrator* has a monitoring system that can be used to see and hear the effect that your behaviours have on your mix. Detailed control of the monitoring system is found on the [Monitoring page](monitoring.md), but there are shortcuts to some of the features on the Audio page.
83+
84+
* The **Connect to DAW** button will connect *Audio Orchestrator* to your digital audio workstation (DAW). The first time this option is used, a settings dialogue box will be shown. The settings can be opened again by clicking the cog icon next to the "Connect to DAW" button. See the [Monitoring page](monitoring.md#daw-connect) documentation for more details on connecting to a DAW.
85+
* The **Play/pause** button will control audio playback when *Audio Orchestrator* is connected to the REAPER DAW.
86+
* The **Rerun allocation algorithm** button causes the [allocation algorithm](allocation-algorithm.md) to be rerun without needing any of the changes that would normally cause that to happen (a device being added or dropping out, or a control value changing). This can be useful for testing different possible random allocations.
87+
88+
!!! Tip
89+
On the Audio page, you won't be able to see any effect of clicking "Rerun allocation algorithm". You will be able to see changes on the [Monitoring page](monitoring.md) as well as hearing the changes if you've connected to a DAW.
90+
91+
* The **Monitoring** button is a shortcut to opening the Monitoring page.
92+
93+
![Screenshot of the monitoring settings buttons on the Audio page](images/monitoring/audio-page-monitoring-buttons.png)
94+
*Monitoring system shortcuts from the Audio page*

0 commit comments

Comments
 (0)