MusicMaster Integration

MusicMaster is a professional music scheduling software, used by many radio stations worldwide. It can be used in place of the built-in music scheduler of mAirListDB, which is well suited for smaller setups, but has fewer options.

mAirList can work together with MusicMaster in three different ways, which differ in how the music library is kept in sync, and how the scheduled music gets into the mAirList playlist:

LibraryMusic schedulePrimary database
1. Sync via filesCSV export from mAirListDBTPI files, imported by music templatesmAirListDB
2. Sync via Nexus APISync via NexusImported via Nexus by music templatesmAirListDB
3. Nexus database connectionManaged in MusicMasterLoaded directly from MusicMasterMusicMaster

In the first two approaches, mAirListDB remains the primary database: It holds the library, the playlists, advertising, voice tracks etc. New songs are always added to mAirListDB first, and then transferred to MusicMaster. The scheduler of mAirListDB generates the playlists from hour templates as usual; only the music is scheduled by MusicMaster, and imported into the playlists through the music templates. This way, you can keep using the hour templates for fixed elements such as news, jingles and advertising, and let MusicMaster schedule the music only.

In the third approach, there is no mAirListDB at all: The playout connects directly to MusicMaster, and all library maintenance and scheduling is done in MusicMaster. This is particularly suited for 24/7 automated music channels, as no synchronization is required.

Common Setup: Hour and Music Templates

For approaches 1 and 2, the scheduled music is imported by the mAirListDB scheduler. The simplest setup is:

  • An hour template containing a Start of hour marker, one large Fill with music section, and an End of hour marker. Use Music block instead of Fill with music to import the entire log that MusicMaster generated for that hour, including any overplanning.
  • A music template, in which the source of Block 1 is set to External scheduler (or Hybrid, to fall back to the internal scheduler if the import fails), with the import configured as described below.
  • The music template assigned to all hours of the week in the Template Assignments grid.

Then generate the playlists as usual, e.g. with the Generate button in the playlist editor of the Database app. See the Scheduling chapter for details.

1. Sync via Files (CSV and TPI)

This approach exchanges text files between the two systems. It is recommended to create a set of folders for the files, e.g. C:\MM_Sync\Library for the library export and C:\MM_Sync\Schedule for the schedule export.

Library Synchronization

  1. In the Database app, use Database → Export to export the entire library (or the current view or selection), and choose the CSV file format. Always use the same filename, e.g. C:\MM_Sync\Library\LibraryExport.csv, and overwrite it with each export. See Library Export for details on the CSV format.
  2. In MusicMaster, import the file using a library synchronization definition (.def file), placed in the same folder as the MusicMaster database. The definition specifies the source file (SourceType=AsciiD, SourcePath, SourceSpec) and maps the CSV columns (e.g. ID, ExternalID, Filename, Title, Artist) to the MusicMaster fields, separately for new songs and for updates of existing songs. A template for this file is available from MusicMaster support or mAirList support; adjusting it to your database with the help of MusicMaster support is recommended.
  3. Run the synchronization in MusicMaster with Dataset → Library → Synchronize.

It is essential that the mAirListDB database ID is imported into a MusicMaster field, as this is how the songs in the MusicMaster schedule are identified in mAirListDB later.

Repeat the export and synchronization whenever new songs have been added to mAirListDB.

Schedule Export

  1. In MusicMaster, create an export definition for mAirList in the Export File Designer (again, MusicMaster support can provide a template). For the song elements (music, non-music and control items), the 4th column must contain the field with the mAirListDB database ID. Set the Output filename pattern to @y1@m1@d1.TPI (one file per day, named YYYYMMDD.TPI), and the Default output path to the schedule folder.
  2. Export the schedule with Dataset → Schedule → Export → Export to Automation, selecting the mAirList export definition and the date range.

Schedule Import

In the music template, click Configure… next to the block source, and set up the import:

  • File format: TPI Text Playlist Import File
  • File style: One file per day
  • Split hour by / Split block by: Automatic, which uses the start times and block markers in the file.
  • Source folder: The schedule folder, e.g. C:\MM_Sync\Schedule.
  • Filename format: %Y%M%D.TPI

When the scheduler generates a playlist, the songs of the respective hour are imported from the TPI file.

The TPI Format

A TPI file is a text file (UTF-8), with one line per entry. The columns are separated by commas or tabs:

  1. Start time (optional): hh:mm or hh:mm:ss. This also determines the hour the line belongs to.
  2. Timing (optional): N (normal), H (hard fixed time), S (soft fixed time), B (backtimed), E (excluded), or F (fixed). H and S require a start time.
  3. Line type:
    • I – an item from the database, identified by its database ID (column 4)
    • E – an item from the database, identified by its External ID (column 4)
    • F – an audio file (column 4), optionally followed by title, artist and item type
    • D – a dummy item with the title in column 4
    • B – start of a new block, with the block number in column 4 (optional)
    • R – a remark, which is ignored
    • O – an option, e.g. ItemType (default item type for F lines)
  4. Data: Depending on the line type, see above.

A typical file exported from MusicMaster looks like this:

08:00:00,N,I,4711
08:03:25,N,I,4712
08:07:10,N,I,4713

If the 4th column is missing or empty, check that the correct field is used in the export definition, and that the IDs were imported correctly during library synchronization.

2. Sync via Nexus API

MusicMaster Nexus is a server component that provides access to the MusicMaster database over the network. With the Nexus API, mAirListDB exchanges data with MusicMaster directly, without exporting and importing files. Otherwise, this approach works just like the file synchronization.

First, set up the connection to the Nexus server on the Databases → MusicMaster Nexus page of the configuration: Enter the URL and credentials of the Nexus server, the MusicMaster database, and the field mapping. In particular, map the ID field to a MusicMaster field: mAirList stores the database IDs there during library synchronization, and uses them to identify the songs when importing the schedule. See MusicMaster Nexus in the configuration chapter.

Library Synchronization

In the Database app, use Database → Export (entire library, current view, or selection), and choose one of the following formats:

  • MusicMaster Nexus (new items only): Only songs that do not exist in MusicMaster yet are created. Existing songs are not changed.
  • MusicMaster Nexus (new items and updates): Additionally, existing songs (identified by the database ID in the MusicMaster ID field) are updated with the current data from mAirListDB.

If more than one Nexus API is configured, you are asked which one to use.

Schedule Import

No schedule export is required in MusicMaster: mAirList retrieves the schedule directly through the Nexus API.

In the music template, set the source of the block to External scheduler (or Hybrid), click Configure…, and select MusicMaster Nexus as the Import source. The file-related settings of the playlist import are not used. Click Configure… next to the import source to set up the Nexus import:

  • Nexus API: Select one of the Nexus APIs from the local configuration, or configure the connection globally for this template.
  • Automatically split blocks at lognotes that contain the following string: If checked, the hour is split into blocks at MusicMaster lognotes. Enter a string to only split at lognotes that contain it, or leave it empty to split at any lognote.
  • Raise error on unscheduled items: Treat unscheduled positions in the MusicMaster schedule as an error, instead of skipping them.
  • Remove/filter lognotes: Do not import lognotes into the playlist.
  • Remove/filter items marked as “No Export”: Skip items that are marked as “No Export” in MusicMaster.

The scheduled songs are then retrieved from MusicMaster whenever the mAirListDB scheduler generates a playlist.

3. Nexus Database Connection

In this approach, mAirListDB is not used at all. Instead, the playout is connected directly to MusicMaster, through a database connection of type MusicMaster Nexus Server.

Prerequisites

  • A MusicMaster database, with a Nexus server (or a MusicMaster client/server database that implements the Nexus API). Its HTTP port must be reachable from the playout computer.
  • An audio folder that is accessible from the playout computer (via a Windows share or HTTP). The filenames of the songs (without folder) must be stored in a MusicMaster field.

Setup

  1. Set up the Nexus API on the Databases → MusicMaster Nexus page of the configuration, including the audio folder and the field mapping. At least Artist, Title, Filename, and XML Metadata (in which mAirList stores additional metadata, e.g. cue markers) should be mapped.
  2. On the Databases page, click Add and select MusicMaster Nexus Server. Select the Nexus API, and adjust the settings of the connection. See MusicMaster Nexus Server for a description of all settings.

Playout

With this connection:

  • The playout loads the hourly playlists directly from the MusicMaster schedule, e.g. with the usual hourly event in the event scheduler.
  • Songs are played from the audio folder, using the filename stored in MusicMaster.
  • Lognotes can be replaced by advertising blocks or external content (e.g. news), see the Content tab of the database connection.
  • With Reconciliation enabled, mAirList reports the start and stop of each song back to MusicMaster in real time, so that the actual playback is recorded in MusicMaster.

The following actions are available to keep the playlist in sync with changes made in MusicMaster after the playlist has been loaded:

  • MusicMaster → Synchronize Playlist: Synchronizes the playlist with the current schedule in MusicMaster.
  • MusicMaster → Update unscheduled positions: Updates the unscheduled positions of the playlist from MusicMaster.

Adding Music

New songs can be added to the MusicMaster library in two ways:

  • Manually in MusicMaster. The exact filename must be entered into the filename field.
  • With the Nexus Importer (mAirList.exe -mode nexusimporter), which is also available from the Windows Start Menu. It retrieves the list of songs from MusicMaster, scans the audio folder for audio files that are not in MusicMaster yet, and lets you select which of them to import as new songs. The tags of the files (e.g. ID3 tags) are transferred into the MusicMaster fields.

Editing Music

Library maintenance should generally be done in MusicMaster. The main exception are the cue markers, as MusicMaster does not provide an editor for them. They can be edited with the Nexus Editor (mAirList.exe -mode nexuseditor -songid <id>), which opens the mAirList item properties dialog for a particular MusicMaster song, and saves the changes back to MusicMaster.

MusicMaster User Buttons

Both tools can be launched directly from MusicMaster with User Buttons, which are defined in MusicMaster.ini. Adjust the paths to your installation:

[UserButton1]
Tooltip=Look for New Files in mAirList
App=C:\Program Files\mAirList\mAirList.exe
CommandScript="-mode nexusimporter"

[UserButton2]
Tooltip=Edit song in mAirList
App=C:\Program Files\mAirList\mAirList.exe
CommandScript="-mode nexuseditor -songid " & mm.GetField(1)

If more than one MusicMaster database is configured, add the database to the command line, e.g. "-mode nexuseditor -database """ & mm.DatasetLogo & """ -songid " & mm.GetField(1). The value of -database is matched against the database ID and the alias of the Nexus APIs configured in mAirList.

Regionalization

With regionalization, mAirList can create Region Containers automatically from the MusicMaster schedule:

  1. On the Content tab of the database connection, enter a filename suffix for each region, e.g. -ATOWN, -BTOWN, -CTOWN.
  2. Create the regional versions of an item with these suffixes, e.g. jingle1-ATOWN.mp3, jingle1-BTOWN.mp3 and jingle1-CTOWN.mp3. They should have the same duration, and must be stored in the same folder.
  3. In MusicMaster, create a Yes/No field (e.g. “Regionalized”), check it for these items, and map it to Regionalized in the Nexus API field mapping.
  4. Schedule one of the versions (e.g. jingle1-ATOWN.mp3) in MusicMaster.

When mAirList encounters a regionalized item in the schedule, it collects the versions for the other regions by their suffixes, and creates a Region Container from them.