> For the complete documentation index, see [llms.txt](https://audalaxy.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://audalaxy.gitbook.io/docs/musicmaster/musicmaster-scheduling-workflow.md).

# MusicMaster Scheduling Workflow

Audalaxy has created APIs that allow media companies to connect their existing software systems (e.g. MusicMaster, Dabis, Zenon) to the cloud playout.

**The API can be used under the following conditions:**

* the specified XML format can be exported from Musicmaster
* all required fields in the XML are filled in
* the import trigger must be triggered repeatedly if audio elements are missing

## Workflow

1. Audio files export
2. Audio meta data export
3. MusicMaster Scheduling export

<figure><img src="https://1781286720-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJlGc7tuckFAC4xSkQfs%2Fuploads%2FwSlnzLECWrZ5knvo5ndL%2FMusicmaster_scheduling_workflow.png?alt=media&amp;token=adadfe4e-fd98-43ba-9567-c47ab853307c" alt=""><figcaption></figcaption></figure>

**1. Audio files export:**

* Export as MP3
* Upload via FTP or clients that support s3-APIs
* The name of the file has to be unique and match with the ID or ArchivNumber.

**2. Meta data export:**

* Export the meta data files from the broadcast system and upload via FTP or s3-client.
* Meta data must be linked to audio files by ID or ArchivNumber.

**3. MusicMaster Scheduling:**

* Export the MusicMaster scheduling as XML
* The XML indicates which audio files are used by referencing the ID or ArchivNumber of the audio files.
* One XML per broadcast hour OR one XML per day
* The targeted channel needs to be enabled by Audalaxy first.
* Reference the Audalaxy channel by providing the channel key as StationName in the XML file.
* Upload via FTP or s3-Client
* The finished upload automatically triggers the import process.
* Audio files will be added to the Audalaxy audio library, scheduled will be transformed to the internal format and pushed to the Audalaxy console.
* The reset of the schedules is set to midnight by default. It is possible to change the reset to any hour - this must be set up by a Audalaxy staff member.

Upload files via FTP or s3-client (rClone etc.) and wait. If the file is in the “processed”-folder, it has been processed. If you want to update the scheduling, audio files or audio metadata, simply re-upload the file again.

{% hint style="warning" %}
**Attention:**

* All files must have a lower case file extension (.mp3, .xml, …)
* All audio files used in a MusicMaster scheduling must be present BEFORE, otherwise they are marked as errors and skipped
* For all audio files that are used in a schedule but can not be found are created empty files with the missing ID as name in the “requested”-folder. You can observe this folder and upload missing files. The reference in the “requested”-folder is then deleted.
* Missing audio files are not automatically included in the schedule if they are sent subsequently - the scheduling XML file must be uploaded again.
  {% endhint %}

## API

**Audio files:**

The system works internally with MP3. Therefore, we recommend providing MP3 files in high quality (44,100 Hz sampling rate). In principle, MP2/MUS files can also be provided. But then we convert them internally. To get the best quality, you should upload the files in the correct format.

**Meta data export:**

* For the audio files, the corresponding metadata is absolutely necessary.
* Two formats are supported: XML and CSV
* The file must have the same name as the audio file (ArchivNumber), but the extension .xml or .csv.
* In addition to the artist and song, the most important information is the duration, CueIn, CueOut, StartNext, FadeIn, FadeOut and Intro.
* There is no automatic calculation of transitions. Exactly the values that are transferred via the metadata file are used.

The XML already contains the names of the fields - the CSV is structured as follows:

```csv

"ID":        1,
"Name":      2,
"Title":     3,
"Etype":     4,
"CueIn":     5,
"CueOut":    6,
"Intro":     7,
"Outro":     8,
"Mix":       9,
"FadeIn":    10,
"FadeOut":   11,
"DbFadeIn":  12,
"DbFadeOut": 13,
"FadeType":  18,
"Type":      19,
"StartNext": 30,
```

**XML:**

{% file src="/files/qtRFiV8GPRuCnWbP2U8L" %}

**CSV:**

{% file src="/files/oUcWAJgYfLnWByJDcPIU" %}

**Example of a scheduling:**

* Schedule files must have the channelkey included in the StationName (additional text is ok): <mark style="color:red;">`<StationStationName="rtlb_98i4femse6_uemx">`</mark>
* The schedule must contain only one date as AirDate tag (format is MM.DD.YYYY): <mark style="color:red;">`<AirDateDate="07.24.2022">`</mark>
* Attention! If there is another AirDate with the same date in the same file, it OVERWRITES the other schedule.
* All hours must be specified within the AirDate tag.
* Each element needs an ID tag that references the audio file.
* Each element needs a runtime value (format mm:ss). If the runtime is 00:00, the element is played “on ramp” of the following track.

```xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Station StationName="radio_98i4gehse2_uenx">
    <AirDate Date="07.24.2022">
        <AirHour Hour="00">
            <Element>
                <ID>S100166</ID>
                <Artist>JINGLE</Artist>
                <Title>Dropin - Jingle MANN 05</Title>
                <AirTime>00:00:00</AirTime>
                <Runtime>00:00</Runtime>
                <NonMusic>Y</NonMusic>
                <Ende></Ende>
                <EAN></EAN>
                <ISRC></ISRC>
                <Label></Label>
                <LC></LC>
                <Verlag></Verlag>
                <Komponist></Komponist>
                <Info1></Info1>
                <Info2></Info2>
                <Info3></Info3>
            </Element>
            <Element>
                <ID>33050M</ID>
                <Artist>Spliff</Artist>
                <Title>Carbonara</Title>
                <AirTime>00:00:00</AirTime>
                <Runtime>04:04</Runtime>
                <NonMusic>N</NonMusic>
                <Ende>F</Ende>
                <EAN>0042283987128</EAN>
                <ISRC></ISRC>
                <Label>Polyphon</Label>
                <LC>00310</LC>
                <Verlag>Edition Spliff</Verlag>
                <Komponist>Heil/Klimek/Tykwer</Komponist>
                <Info1></Info1>
                <Info2></Info2>
                <Info3></Info3>
            </Element>
        </AirHour>
        <AirHour Hour="01">
            <Element>
                <ID>S100159</ID>
                <Artist>JINGLE</Artist>
                <Title>Dropin - Jingle FRAU 01</Title>
                <AirTime>01:00:00</AirTime>
                <Runtime>00:00</Runtime>
                <NonMusic>Y</NonMusic>
                <Ende></Ende>
                <EAN></EAN>
                <ISRC></ISRC>
                <Label></Label>
                <LC></LC>
                <Verlag></Verlag>
                <Komponist></Komponist>
                <Info1></Info1>
                <Info2></Info2>
                <Info3></Info3>
            </Element>
            <Element>
                <ID>13572M</ID>
                <Artist>Amanda Lear</Artist>
                <Title>Follow Me</Title>
                <AirTime>01:00:00</AirTime>
                <Runtime>03:38</Runtime>
                <NonMusic>N</NonMusic>
                <Ende>F</Ende>
                <EAN>4013659660033</EAN>
                <ISRC></ISRC>
                <Label>Target</Label>
                <LC>04520</LC>
                <Verlag>Arabella Musikverlag GmbH</Verlag>
                <Komponist>A.Monn, A. Lear</Komponist>
                <Info1></Info1>
                <Info2></Info2>
                <Info3></Info3>
            </Element>
        </AirHour>
        <AirHour Hour="02">
            <Element>
                <ID>S100157</ID>
                <Artist>JINGLE</Artist>
                <Title>Dropin - Jingle FRAU 03</Title>
                <AirTime>02:00:00</AirTime>
                <Runtime>00:00</Runtime>
                <NonMusic>Y</NonMusic>
                <Ende></Ende>
                <EAN></EAN>
                <ISRC></ISRC>
                <Label></Label>
                <LC></LC>
                <Verlag></Verlag>
                <Komponist></Komponist>
                <Info1></Info1>
                <Info2></Info2>
                <Info3></Info3>
            </Element>
            <Element>
                <ID>24162M</ID>
                <Artist>Klingande</Artist>
                <Title>Jubel</Title>
                <AirTime>02:00:00</AirTime>
                <Runtime>03:16</Runtime>
                <NonMusic>N</NonMusic>
                <Ende>C</Ende>
                <EAN>9715800109716</EAN>
                <ISRC>FR9W11310765</ISRC>
                <Label>B1 Recordings</Label>
                <LC>16158</LC>
                <Verlag>EMI Music Publishing France / Klingande Music / Sony ATV</Verlag>
                <Komponist>Cédric Steinmyller , Edgar Catry</Komponist>
                <Info1></Info1>
                <Info2></Info2>
                <Info3></Info3>
            </Element
        </AirHour>
    </AirDate>
</Station>

```

**Description Structure of the XML document:**

* **ID** (*string* mandatory) - archive number
* **Artist** (*string* mandatory) - artist name
* **Title** (*string* mandatory) - song name
* **AirTime** (*time* highly recommended) - format hh:mm:ss
* **Runtime** (*time* mandatory) - length of the audio item
* **NonMusic** (*bool* highly recommended) - is the audio item music (N) or not (Y)
* **Ende** (*bool*)
* **EAN** (*string*) - EAN code
* **ISRC** (*string* highly recommend) - International Standard Recording Code
* **Label** (*string*) - label name
* **LC** (*string*) - label code
* **Verlag** (*string*) - publisher name
* **Komponist** (*string*) - composer’s name
* **Info1** (*string*) - more information about the audio item
* **Info2** (*string*) - more information about the audio item
* **Info3** (*string*) - more information about the audio item

## More workflows

**Automatic uploads:**

* Observe the “requested”-folder for new elements and upload them to the server.
* To fill the audio library send schedules and upload the requested audio files.
* The references in the “requested”-folder will be deleted after sucesfull imports.
* Upload the schedule again until no new elements are found.

## Troubleshooting

### **The mixing does not sound good**

* deactivate sound processing
* show CueIn, CueOut, FadIn, FadeOut and StartNext values in the protocol of the console and compare them with the values from the XML.

<figure><img src="https://1781286720-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJlGc7tuckFAC4xSkQfs%2Fuploads%2FwlSqhRvA2gbUxfAfobGO%2FTroubleshooting_Mixing_Protocol.png?alt=media&amp;token=ccaceacc-b69d-4d0c-82ab-f551f580d83a" alt=""><figcaption></figcaption></figure>

* If these values differ, the transfer was not correct.
