A simple tool to add basic ADM metadata to a WAV file, according to EBU Production Profile and export it as BW64 file.
pip install .
wav2bw64 infile.wav outfilebw64.wav adm.yaml
Start Web server:
adm_author --host 127.0.0.1 --port 8080
Open http://127.0.0.1:8080 in your Browser
Basic example structure:
- name: Audio Programme 1
language: eng
loudness: -23
apItems:
- name: Stereo Bed
routing: [1, 2]
type: 0+2+0
- name: English Dialogue
routing: [4]
type: Object
object_parameter:
position: {azimuth: 0, distance: 1, elevation: 14}
importance: 10
interactivity:
onOffInteract: false
azRange: [-30, 30]
elRange: [-30, 30]
positionInteract: true
- name: Audio Programme 2
language: ger
loudness: -23
apItems:
- name: Stereo Bed
routing: [1, 2]
type: 0+2+0
importance: 10
interactivity:
onOffInteract: false
azRange: [-30, 30]
elRange: [-30, 30]
gainInteract: false
gainInteractionRange: [-6, 6]
positionInteract: false
- name: German Dialogue
routing: [3]
type: Object
importance: 10
object_parameter:
position: {azimuth: 0, distance: 1, elevation: 0}
This configures two audioProgrammes, one with the name "Audio Programme 1" and one with "Audio Programme 2". The first audioProgramme contains two audioObjects, one with an Object type and one with 0+2+0 DirectSpeakers type. The routing array defines the track indices for the CHNA chunk. It is possible to refer to the same track indices multiple times, as it is done in the example.
The web-based authoring tool enables users to upload a WAV file (axml chunks are curently ignored) and to add ADM Metadata to it such as
- AudioProgrammes
- language of Audio Programmes
- Items (DirectSpeaker & Object) for Audio Programmes depending on uploaded wav file channel count
- Routing to wav file track indices for items
- Interactivity options
- Importance options
- Object settings
The metadata can be generated by exporting the ADM structure. That will be saved in an axml chunk which is attached to a copy of the uploaded wav file, so basically a new BW64 file.
In production mode, the Flask server is just using a bundled Javascript and CSS which was generated using Svelte. To change the bundeled Javascript and CSS, the Svelte project needs to be build again:
cd svelte_app
npm install
Using
npm run build
will just build the Svelte project once and close, whilst
npm run dev
will start a webserver (which is actually not needed, since we are using Flask as webserver) in development mode which will rebuild the bundles on every change.