Table of Contents
List of Figures
List of Tables
ntPlayerStart parameters and interfaces
ntPlayerStop parameters and interfaces
ntEOFWarning parameters and interfaces
ntCartPlayerStart parameters and interfaces
ntCartPlayerStop parameters and interfaces
ntCartEOFWarning parameters and interfaces
ntPlayerPFLOn parameters and interfaces
ntPlayerPFLOff parameters and interfaces
ntPlaylistEmpty parameters and interfaces
Currently available radio automation software can be roughly divided into two categories: On the one hand, there are commercial systems designed for professional radio stations, full of features, but also with extensive requirements for hardware and maintenance. Additionally, due to their nature as a non-mass product, these systems are often very expensive, usually unaffordable for non-profit organizations or private projects.
On the other hand, the growing popularity of internet radio stations resulted in a number of radio-in-a-box products, offering software-based broadcasting solutions, without the need for a mixer or any other hardware which can usually be found at a radio station.
mAirList acknowledges that there must be something in between --- people making radio in a professional manner, with professional or semi-professional equipment, but without the technical and financial background of a commercial station. mAirList provides an automation system that runs on standard PC hardware and easily integrates with any equipment in your studio due to its various remote control mechanisms.
mAirList is developed and maintained by Torben Weibert, born 1977, living in Dortmund, Germany. Torben is a researcher at the Computer Science department at the University of Dortmund, and in his spare time (when not working on mAirList), he takes care of all technical affairs at Dortmund's campus radio station eldoradio*. Torben's further interests include making music, photography, aviation and flight simulation.
The history of mAirList started in Dortmund, Germany, in summer of 2001, at the local campus radio eldoradio*. At that time, eldoradio* was running a software called Airlist in order to broadcast audio files during their live shows (but only jingles and reports, music was still played from CDs). Airlist wasn't very flexible. You could only play WAV files (so other formats like MP3 had to be converted first), and in order to add a file into the local playlist, you were required to manually enter various information such as artist and title. At least, Airlist integrated with the D.MAX mixer, reacting to fader start and PFL commands.
Torben Weibert had been working for eldoradio* since October 2000, but only as a DJ, and without any intention to get involved in any technical matter, despite being a computer science student. Nevertheless, being annoyed by Airlist's shortcomings, he decided to create his own alternative: mAirList was born.
Of course, mAirList 1.0 wasn't as feature-rich as the current versions, but at least it added some convenient possibilities: MP3 files were supported, and items could be simply dragged and dropped into the playlist from the built-in directory browsers. mAirList got its name from the fact that it had more features than the old Airlist (the syllable mAir is pronounced like the German word mehr, which means more.
For a while, mAirList remained inofficial alternative to Airlist, both programs residing side-by-side on eldoradio*'s studio computer, but finally, more and more DJs switched to mAirList, and eventually Airlist was abandoned.
It wasn't until October 2002 that mAirList was finally released to the public. The first public version supported up to three players, and used DirectShow for the sound output. The following versions of the 1.1.x release let mAirList grow rapidly, and BASS.DLL was introduced as the default sound engine.
In December 2003, mAirList 1.3 was released, with a completely remodeled interior, supporting an unlimited number of playlists and players. Having undergone a number of fixes and improvements, that version finally resulted in the first stable release 1.4 in October 2005. At the same time, the new testing branch 1.5 was established, the first release with an English user interface (and support for localization).
Today, mAirList is used in a growing number of radio stations, still mostly in German speaking countries. With the release of mAirList 2.0 in 2006, an English manual and English homepage is provided. The next goal is to make mAirList popular around the world ;-).
This section gives a brief overview on mAirList's features.
Playback of audio files is organized through one or more main playlists which contain the items scheduled for broadcasting. Playback takes place through a user-defined number of players, each of which can be assigned to a different sound card (and is usually connected to a fader on your broadcast mixer). You can define as many playlists and players as you like, however, for most purposes, a single playlist with two or three players will be suitable.
In addition to the playlist-bound players, mAirList offers an optional cartwall, again with a user-definable number of players (slots). The cart players are all linked to the same sound card and are typically used for the playback of jingles and short sound files.
With a single click, you can switch from assist to automation mode, and mAirList will broadcast your playlist automatically. The integrated event scheduler, which is available in either mode, can be used to play jingles or load playlists programatically at a given time. You can also insert break points and command markers for remote control of other mAirList instances.
mAirList comes with its own scripting language, mAirListScript. It's Pascal-based, thus easy to learn, and you can use many of the functions and classes known from Borland Delphi. With the interfaces offered by mAirListScript, you can manipulate the playlist and all of mAirList's internal data structures dynamically. Special notification scripts can be installed which get called automatically in certain events.
mAirList works with any Windows compatible sound card. For the best playback results, the sound card should be supplied with WDM compatible drivers (which virtually every modern sound card does). Additionally, mAirList supports ASIO drivers.
Playlists and cart players can be loaded by dragging items from the built-in directory browsers or Windows Explorer. Optionally, mAirList provides interfaces to three different types of databases, which can be used to search for songs or to organize playlists: eldoDB, radioDB and iTunes.
All of mAirList's features can be controlled through a number of remote control mechanisms: User-definable hotkeys, MIDI events, joystick buttons and SOAP remote procedure calls via TCP/IP. Converting a cheap game pad, you can easily build an interface to the fader start mechanism of your broadcast mixer.
Elapsed and remaining time of a playlist item or cart slot are visualized through a colored progress bar displayed in the player and, optionally, as well in the playlist.
The ramp (intro) of a song is visualized by an additional progress bar and a count-down time display, thereby making ramp talks a lot easier for the presenter.
mAirList instantly calculates the starting times of all items scheduled in a playlist, and can be configured to display these inside the playlist. Futhermore, when you double-click the time label of a player, mAirList will display the real time the item will be finished if started at this very moment.
The whole user environment (contents of playlists and cart players, open browsers, ...) can be saved into mAirList playlist files (*.mlp) and loaded later. You can also create template files (*.mlt) for frequently used profiles. Additionally, the assignment of the cart players can be saved into *.mlc files. The most popular assignments can be made avaible through a convenient drop down menu. All file formats are XML based, allowing for easy integration with 3rd-party software. Playlists can also be imported from *.m3u files.
Table of Contents
At any time, two releases are avaible for download: The stable release and the development (testing) release.
If you want to use mAirList in a production environment, you should use the latest version from the stable release. These versions are thoroughly tested, though they lack the latest improvements introduced in the development release.
The stable release can be identified by the even number in the middle of the version number; the current stable release is 2.0.x, the previous stable release was 1.4.x, and the next stable release will either be 2.2.x or 3.0.x.
The development release (also called testing release in the honor of the Debian Linux distribution) is the place where you can take part in the development of mAirList by testing the latest improvements (which are often encouraged by the mAirList community, proposing new features in the forums). The purpose is to present these improvements to the public and receive feedback and, possibly, bug reports. As development versions may contain errors, you should not use them in a production environment.
After a certain time, no more features will be added, some final bug fixing takes place, and the latest development version will be turned into the new stable release. At the same time, a new development release will be started where the next improvements are implemented.
Development versions have an odd number in the middle of the version number, for example 1.5.x or 2.1.x.
mAirList was originally developed for eldoradio* in Dortmund, Germany, a campus radio station always short of money, and which couldn't have afforded any commercial product. Many similar organizations suffer from the same circumstances, so that mAirList is provided free to them.
In particular, the following licenses are available:
For prices etc. refer to http://www.mairlist.com/en/documentation/v2.0/html/. Free licenses can also be requested there.
Having requested or bought a license, you will receive a file license.ini, which has to be placed in the mAirList program folder. Without a license file, mAirList will be fully functional, but you will see a notification at startup, and you are not allowed to use the software after a testing period of 30 days.
mAirList is released as a zip archive, and does not come with a setup application. The configuration is stored in the file mAirList.ini, located in the same directory as
mAirList.exe (you can specify an alternative configuration file with the -c command line switch). This way, mAirList can be easily removed, and multiple copies can reside on your hard drive simultaneously without interference.
To install mAirList, simply unzip mAirList-<version>.zip which contains the following files:
mAirList.exe
mAirListConfig.bat
mAirList.exe with the -config command line switch in order to display the configuration dialog.
BASS.DLL
BASSMIX.DLL, BASSASIO.DLL
mAirList.ini
layout.ini
manual.pdf
If you have obtained a license file, place it into the same directory as these files.
Table of Contents
mAirList comes with an example mAirList.ini file which enables you to use the software without any prior in-depth configuration. This chapter gives a brief overview about the default configuration, and shows you how to use mAirList.
Figure 7.1, The mAirList default screen shows mAirList running in the default configuration. You can see the various elements marked with big red numbers:
The main playlist. This is where you put your audio files scheduled to be broadcasted, either automatic in automation mode, or manually in assist mode. Currently, four files have been put into the playlist, the first three of them are already loaded into the three players. In the default configuration, the players are loaded automatically with the top-most items; this can be disabled in the configuration or in the context menu (right click on the playlist).
The toolbar below the playlist gives you some information about the playlist: currently, it is running in assist mode, so you have to start and stop the players manually. Click AUTO to activate automation mode. On the right hand side, you can see the number of items (4) and the total duration (15 minutes and 2 seconds).
The players. In the default configuration, there are three players associated with the playlist, titled A, B and C. When loaded with an item, the players show the artist and title and the duration of the item. The green bar shows the progress once playback is started. You can click the time label to toggle between elapsed and remain mode. Or double click to activate backtiming mode, in which the player shows the (real) time at which playback will be finished (or would be finished, if the player would be started in this very moment).
The cartwall. It consists of a user-definable number of players (six in the default configuration). These players are not associated with the playlist but loaded and started individually. As you can see, a file has been loaded into slot number two, the other slots are empty.
The browsers. This is where you can search and select the files to be inserted into the playlist or the cart players. In this screen shot, a directory has been openened. Additionally, you can access the Repository where each broadcasted file is moved to.
The LED clock. Just for your convenience. You can disable this clock in the configuration dialog, or replace it with a standard 24-hour digital clock.
Before you can broadcast a file, you need to add it to the playlist or to one of the cart players. The most convenient way is to open a directory in the browser section, and drag-and-drop the file into the player. To open the directory, click the Add button above the browsers, and you will be prompted to select the desired directory. You can also add browsers containing a directory tree or pre-defined playlists (e.g. M3U). Click the little arrow next to the Add button and chose an option from the menu.
In order to add a file, drag-and-drop it from the browser (or from Windows Explorer) into the playlist. You can also drag a file directly into one of the players. It will be inserted into the playlist automatically.
By default, the auto load option is enabled: mAirList will automatically load the top-most three items into the three players. You can change the sequence of the items in the playlist by grabbing an item in its left-most column and dragging it into the desired position. Moving an item into the top three positions will automatically load it in a player.
You can also load the players manually by dragging and item from the playlist into a player (when starting to drag, you have to click the item in any but the left-most column). This is mandatory when auto load is disabled in the playlist's popup menu.
Before broadcasting an item, you might want to pre-listen to it. The default hotkeys are F5, F6 and F7 for player A, B and C, respectively. Press the same key again to quit PFL mode. (All hotkeys can be customized, or you can use other remote control methods like MIDI or joystick interfaces). By default, all players use your default sound card for both broadcasting and pre-listening. You can change this in the configuration dialog.
Activating the PFL mode, the Advanced PFL window will appear which allows you to set various cue points:
This is the cue in point at which playback should begin. Anything before this point is cut off.
The ramp or intro point, usually the point at which vocals begin within a song. mAirList will visualize the segment between cue in and ramp with an additional progress bar, assisting you with ramp talks.
The point at which vocals stop (and the presenter can talk again over the instrumental part). The progress bar is displayed dark green after this point.
The point at which the automation should fade out the song and start the next item. This value is also considered when computing the effective duration of the item, and used as the end marker of the progress bar.
The point at which playback of the item should definitely stop. Can be used to cut of noise at the end of songs.
Each cue point has three buttons:
Set the value to the current playback position.
Reset/delete this cue point.
Let playback jump to this cue point.
You can also use the mouse wheel in order to fine-tune a cue point in 1/100s steps. The mouse wheel will affect the cue point which has been altered by one of the buttons lastly. So the steps of setting an exact cue point would usually be the following:
Listen to the PFL playback.
When reaching the approximate position, press SET.
Click TEST to listen to your selection.
Use the mouse wheel to fine-tune the point, and use TEST to test the new fine-tuned value.
Each type of cue point can also have a list of alternative values, for example when a song offers different end points for ramp talks, or in order to implement refrain hooks. To access this list, click the label displaying the cue point's current value. A new window will appear displaying all alternative cue poins. You can add the current value as a new alternative, delete an alternative or double click a value in order to copy it to the current value. Clicking TEST will activate test mode in which playback jumps to an alternative value when it is clicked.
Table of Contents
mAirList does not store its configuration in the Windows Registry, but in the configuration file mAirList.ini, located in the same directory as mAirList.exe. That file is read by mAirList when the program starts. Changes to the configuration cannot be made during run-time, but you have to restart mAirList in order to reload the changed configuration (though a number of options can be changed while mAirList runs, such as the appearance of the playlist, the automation mode, and so on).
Configuration is assisted by the configuration dialog, displayed when mAirList.exe is run with the -config parameter. For your convenience, a batch filed named mAirListConfig.bat is supplied in the distribution archive that runs mAirList with this parameter.
The configuration dialog is divided into various categories, which can be accessed through the left-hand menu tree, and which are described in the following sections.
The playlist is the most important element in mAirList's main window. It holds the scheduled playlist items and distributes them among the assigned players. By default, mAirList displays one main playlist, but you can choose to set up multiple playlists.
You can also set the number of playlists to 0. In that case, mAirList will turn into a pure cartwall.
For each defined playlist, there is an item in the menu tree on the left of the configuration dialog, displaying the playlist options page. In particular, the following settings can be made:
Each playlist goes along with a number of players which are used to broadcast the elements in the playlist. For each player, a new item appears in the menu tree, from which you can access the player details page (see below).
Set the number of items to keep in the main playlist after having been played. The items are drawn in gray at moved to the Played Items list later. Set to 0 to move any played item to the Played Items list immediately.
The further options are:
If checked, mAirList uses a two rows to display each playlist item (one for the title, one for the artist). Otherwise, title and artist are displayed in the same row.
If checked, the first column is used to display the scheduled, real or calculated starting time of each item.
If checked, an additional progress bar is displayed below the playlist item while it is playing in one of the players.
This option must be checked in order to make the playlist item's comment appear in the playlist.
Uncheck this option to prevent the user from activating the automation mode.
If checked, two buttons labeled ASSIST and AUTO will be displayed to switch between assist and autmation mode. Otherwise, there's only one button to toggle between these modes.
Display the playlist toolbar below the playlist instead of above the playlist (which is the default).
If checked, the playlist history is cleared when you start a new file or open a playlist.
If checked, 0:00:00 is displayed in the duration column if the duration of an item is unknown or unset. Otherwise, the cell is left blank.
If checked, 0:00 is displayed in the ramp column if no ramp is set. Otherwise, the cell is left blank.
If checked, the spacebar can be used in automation mode to fade out the current and start the next item.
The options marked with * can be toggled at run-time through the playlist context menu.
Finally, you can specify the prefixes to use in the left-most playlist column in backtiming mode depending on the type of starting time calculated for an item: Fixed (if a fixed time was entered in the Properties dialog), absolute (real time, calculated from the real starting time of the active player), or relative (offset from the top of the playlist).
Each player of each playlist can be configured independently on the appropriate configuration page. The options for each player are:
This should be a single character (for example, 1, 2, 3, ... or A, B, C...) that identifies the corresponding player. It is displayed in the player control in the main window, and also in the playlist next to the playlist item loaded in the respective player.
Each player is assigned a color that visually identifies it in the main window. The color is used to indicate that the player is active, and also in the leftmost playlist column to mark the loaded playlist item. If you place colored stickers on your mixing desk, your presenters will quickly find the right fader.
Click the Select-button to choose the sound card to use for this player. The sound device selection dialog is described below.
Here, you can choose the sound card to be used in PFL mode. If you own a mixer with PFL capabilities and switch the channel to PFL while pre-listening, this will probably be the same as the normal output device. But you can also choose to route the PFL signal to a different sound card, for example to a special PFL bus.
The player will start to flash the specified time before reaching the end of file. Setting this option to 0 disables EOF warning.
Disable this option to hide the PFL/START/PAUSE/STOP buttons inside the player. This is useful when you do not want to control the players with the mouse but only through other remote control mechanisms like hotkeys, gameport closures etc. (see Section 8.5, Remote Control).
If checked, the Advanced PFL dialog will be displayed while in PFL mode, and you can set cue points.
If checked, the player automatically loads the next available item from the playlist.
If checked, the player is automatically unloaded when a STOP signal is received.
If checked, the player is automatically unloaded when reaching the end of file.
If checked, the player is stopped and reset when reaching the end of file. This setting is ignored when Auto unload on STOP is set.
Check this option if you want this player to be included in the start and stop log files. Logging must be globally enabled on the Logging configuration page (cf Section 8.7, Logging).
Check this option if you want this player to be included in the database logging. SQL database logging must be globally enabled on the Logging configuration page (cf Section 8.7, Logging).
If checked, the elapsed/remaining time will be displayed in full seconds, otherwise in 1/10th of a second.
If checked, the ramp time countdown will be displayed in full seconds, otherwise in 1/10th of a second.
If checked, leading 0s will be stripped from the elapsed/remaining time if it is less than one hour.
By default, playback and PFL are mutually exclusive; you cannot pre-listen to an item when it's already playing in a player, and vice versa. However, if you use distinct sound cards for PFL and playback, you can enable this option and thus decouple PFL and playback. This is useful for end monitoring while the player is already active. (If this option is disabled, you can still pre-listen to an active item by opening an Extra PFL window for it.)
The options marked with * can be toggled at run-time through the player context menu.
For each player, you can choose which output device used for the on air signal and the PFL signal, respectively. Furthermore, mAirList allows you to route the signal to a specific channel pair on multi-channel (5.1 or 7.1) sound cards. The Output Device dialog allows you to select the desired combination.
mAirList supports three different output methods (or drivers), all of which rely on the BASS.DLL audio engine, which must be present in the mAirList program folder.
This is the default. BASS.DLL decodes the input stream and uses DirectSound to send it to the WDM or MME driver of the sound card. When multiple files are played simultaneously, the sound card takes care of the mixing.
While most sound cards can handle simultaneous playback of files with different sample rates, some can not, and distorted or pitched sound output will result. In software mixing mode, the mixing and sample rate conversion is done on software level, and only one (fixed rate) stream is sent to the sound card. Use this option only if your sound card suffers from the above mentioned problem, as it consumes more CPU resources. The file BASSMIX.DLL must be present for this driver to work.
ASIO is a driver model offered by a number of (mostly mid- to high-end) sound cards. As software mixing takes place before the stream is sent to the ASIO driver, you need both BASSASIO.DLL and BASSMIX.DLL. Unfortunately, due to the construction of the BASSMIX engine, mAirList cannot take advantage of the famous low latency of ASIO, in fact, latency can even
be higher than with WDM. So you should only use ASIO if WDM doesn't work for your card.
Having chosen the driver to use for this channel, you can set the following options:
Select the sound card to use.
Old Sound Cards and the Emulated mode. In case the sound card is marked as emulated, it does not support WDM drivers but only MME. This is a disadvantage, and you should better get a different sound card with WDM support (which almost every card has today).
For multichannel sound cards, choose the pair of channels (speakers) to be used. If you intend to use separate channels for your players, avoid using the default setting, but explicitly assign a channel to each player. Otherwise, clicks and pops may occur.
Making all Channels Visible. To make all channels of a multichannel sound card appear in this list, you have to set the speaker type in Windows' Control Panel to 5.1 or 7.1. If the speaker type is set correctly, but still only channels 1/2 appear here, try to set the force multichannel output option on the BASS.DLL page and restart the configuration dialog.
You can enter a fixed sample rate to use for this sound card. If you have multiple players using the same card, make sure to enter the same value for each player. This setting is ignored for BASS.DLL hardware mixing.
On this configuration page, you can activate and customize the built-in cartwall. The following options can be set:
Select the desired number of cart players (slots).
Just like the ordinary players, you can assign a sound card for the on air signal and the PFL signal of the cart players. For details, see Section 8.2.1 Output Devices.
Choose the number of seconds before the end of file the cart players should flash. Setting this option to 0 disables EOF warning.
You can save the assignment of the cart wall (currently loaded files) to a *.mlc file from within mAirList. The most frequently used cart sets can be added to this list, and later be quickly accessed through the drop down box above the cartwall.
Specify a cart set to be loaded automatically at startup. If left blank, mAirList will look for a file named standard.mlc, or keep the cartwall empty if that file does not exist.
If checked, the cart player assignments are included in the playlist files. When you open such a playlist later, the cartwall will restored.
If checked, the cart player assignments are included in the playlist template files. When you open such a template later, the cartwall will restored.
If checked, the cart players will stay open when you click New in the tool bar. Otherwise, all cart players will be closed.
Usually, only the items played in the ordinary players get logged in the global log file(s) (cf. Section 8.7 Logging). If this option is set, also elements played in the cartwall will be logged.
This enables simultaneous PFL and playback, which is only useful if you have distinct sound cards configured for PFL and playback. See Section 8.2 Player for further information about this option.
On an additional configuration page, you can set the display options for the cartwall. Choose whether the cartwall should be displayed embedded in the main window (below the playlist(s)) or in its own window. If the latter option is set, you can additionally choose whether the cartwall window should be open at startup, maximized, and on which screen it should appear (in case you own more than one monitor).
On an additional configuration page, you can set various display options for the cartwall.
Disable this option to hide the PFL/START/PAUSE/STOP buttons inside the cart players. This is useful when you do not want to control the players with the mouse but only through other remote control mechanisms like hotkeys, gameport closures etc. (see Section 8.5 Remote Control).
If checked, the cart players can be started and stopped with a single left button mouse click.
If checked, the elapsed/remaining time will be displayed in full seconds, otherwise in 1/10th of a second.
If checked, the ramp time countdown will be displayed in full seconds, otherwise in 1/10th of a second.
If checked, leading 0s will be stripped from the elapsed/remaining time if it is less than one hour.
Furthermore, you can choose whether the cartwall should be displayed embedded in the main window, or in its own window. In the latter case, you can specify whether it should be displayed maximized and/or in the foreground at startup. Furthermore, if you own multiple monitors, choose which screen to display the cartwall on initially.
On this page, you can activate a number of additional elements to be displayed above or below the browser windows:
A standard, 24h digital clock, displayed below the browser.
A fancy LED clock, as found in most commercial radio studios. Also displayed below the browsers.
An arbitrary image, displayed above the browsers in the top right corner of the main window. Supported formats are JPG and BMP. The image is not automatically resize, so be sure to use an image with the correct dimensions.
Additional options are:
If checked, mAirList will save information about all active browsers to the .mlp playlist files. When opening such a file later, the browsers will be restored.
Accordingly, but for template files (.mlt).
If checked, the browsers will remain open when you click New.
If checked, mAirList will open a repository browser when you start a new file, or when you open a file which does not contain one.
Show the browser windows as tabbook, instead of the new, fancy Outlook-style sidebar.
One of mAirList's most prominent features is that the software can be remote controlled in various ways. At this time, remote control by hotkeys, joysticks, MIDI and a special network interface is supported. mAirList offers a set of commands by which all functions can be controlled. A complete reference is given in the appendix.
Chaining Commands. You can chain multiple commands by placing a semicolon between them. For example, PLAYER 1-1 STOP;PLAYER 1-2 START will stop the first player and start the second player at the same time.
Hotkeys are the easiest way to remote control mAirList. You can assign arbitrary commands to arbitrary keys. The hotkeys are registered as system hotkeys, so they will also work when mAirList is not the foreground window.
To define a new hotkey, first enter the Key field and press the desired key combination. Then, select an action from the list, or type the desired command, and click Add.
You can also use the buttons of a joystick to control mAirList. This is a very flexible feature, many people have exploited this method to build an interface to the fader start connection of their broadcast mixer. For example, one can easily disassemble a budget USB gamepad and connect the fader start GPO outputs to the button connectors of the game pad. This way, you get an 8-port fader start interface for less than 10 Euro. It is also possible to connect the GPO directly with the game port of your computer (although you will need to add some additional resistors, in order for Windows to recognize this interface as a joystick).
The configuration dialog shows all available joysticks (use the Control Panel to install yours first), and all of their buttons. Select a button and choose the actions to take when the button is pressed or released respectively.
MIDI means Musical Instrument Digital Interface and is a very common interface in the world of musical instruments and sound processing. Virtually every keyboard, synthesizer and sound processor has a MIDI interface. Additionally, there are many low-cost MIDI controllers available. mAirList can receive arbitrary MIDI commands and map them to internal actions.
A MIDI command consists of three values: Status, Data 1 and Data 2. For example, when you press a key on a MIDI keyboard, Status would indicate the type of event (e.g., key was pressed), Data 1 the key (note and octave), and Data 2 the velocity. You can assign an action for each combination of Status, Data 1 and Data 2. For Data 2, you can additionally specify whether the received value must be less or equal, greater or equal, or exactly the specified value. This way, you can easily events that may differ in their Data 2 value (for example, the above mentioned key press on a MIDI keyboard).
mAirList can also receive commands over a TCP/IP network. For that purpose, a special web server is opened on the specified port, offering a standard SOAP interface. To send commands to mAirList, use the mAirListCommand software provided on the home page.
The network interface bases on the RemObjects SDK (available from http://www.mairlist.com/en/documentation/v2.0/html/) and can also be accessed by RemObjects own protocol.
SAS is a propietary protocol used by mixers from the company Lawo. The mixer is attached to the serial interface of the computer. You can set up the parameters of serial port on this configuration page. If enabled, mAirList will intercept all GPIO events of the form Sxxx and Rxxx, where xxx is a number between 1 and 256. You can assign a command to each of these events.
Unless using a database, you will often need to access the same directories frequently during your shows. The folders added to this list will appear in the drop down menu connected to the browser Add button. This way, you can open your favorite directories with just one click.
Note - If the directory name is preceeded by a + sign, mAirList will open a directory tree browser instead of an ordinary directory browser.
mAirList allows you to keep track of the broadcasted files by maintaining customizable log files. Additionally, log information can directly be written to an SQL database. You can use the variables shown in Table 8.1, Log variables which are automatically expanded.
Table 8.1. Log variables
| variable | meaning |
|---|---|
| %Y | current year (4 digits) |
| %M | current month (2 digits) |
| %D | current day (2 digits) |
| %h | current hour (24h format, 2 digits) |
| %m | current minute (2 digits) |
| %s | current second (2 digits) |
| %1 | file name with path |
| %2 | file name without path |
| %3 | file name without path and extension |
| %a | artist |
| %b | title |
| %c | CueIn position (in mAirList units, 1/10,000,000 of a second) |
| %r | Ramp position (in mAirList units) |
| %o | Outro position (in mAirList units) |
| %f | FadeOut position (in mAirList units) |
| %E | end type |
| %t | tab stop |
| %d | effective broadcasted duration (in mAirList units, only available with stop logging) |
| %e | effective broadcasted duration (in seconds, only available with stop logging) |
You can write a log file both when a song is started (for example, for an online playlist) and when it is stopped (for example, for accounting). Log variables may be used in both the file name and the log file format used for each log file entry.
Log entries may also be written to an SQL database. A number of common database servers are supported, but you need to copy the client DLL to your mAirList folder (for example, libmysql323.dll is the MySQL 3.23 client library, which can also be used to access version 4.x and 5.x servers). Select the appropriate database type and enter the connection information (host, database, user and
password). Finally, enter an INSERT statement to be issued when an element is started or stopped, respectively. You can use any log variable. If you want to deactivate start or stop logging, leave the appropriate
INSERT command field blank.
The database connection specified here is a special connection only used for logging, and does not interfere with the database connections used to access playlists and music archives (see Section 8.8, Databases).
mAirList's playlists can easily be propagated with files dropped in from the built-in directory browsers or Windows Explorer. However, in a complex studio environment, it might be convenient to use some sort of file and playlist management. mAirList currently offers interfaces to three such music databases: iTunes, eldoDB and radioDB.
To add a new database connection, click the Add button and select the desired database type. Then, enter the required details in the database parameters field below. Finally, do not forget to save the data with the Save changes button appearing below the parameter field.
Apple iTunes is a digital jukebox and music library software that comes along with the popular iPod MP3 players, but can also be used when you do not own an iPod. mAirList allows you to use the playlists defined in iTunes, search for songs, and access the whole database in a tree structure identical to the one found on your iPod.
iTunes maintains its own database of MP3 files in the My Documents\My Music\iTunes folder on your local hard drive. In particular,in that folder resides the file iTunes Music Library.xml which contains information about all files in the database, all defined playlists and so on.
When adding a new iTunes database connection, only one parameter has to be set:
This is the complete path and file name of the iTunes Music Library.xml file.
eldoDB is the music database written for mAirList by Torben Weibert. It uses MySQL as its storage backend, and comes with the Musikliste.exe management software. You can manage your song archive, and manually or automatically create playlists.
Development of eldoDB has been abandoned in favor of the upcoming mAirListDB project (scheduled to be released along with mAirList 3.0). However, you can still use eldoDB in the meantime.
The required parameters are:
The database protocol to be used to connect to the SQL server, usually mysql-3.23. You need the client library libmysql323.dll. For reasons of licensing, this is the only client library version to be used with closed-source software like mAirList, but you can also connect to newer MySQL servers with it (in fact, \eldoDB\ needs at least MySQL Server version 4.0).
These are the settings used to connect to the MySQL server.
eldoDB uses relative filenames within the database, which are prepended by a base directory specified for each client. This way, you can easily use different directories when accessing your music folder, for example through a local hard disk on the server, through a network share on your clients, anlifdbwqay.d through a different local drive (holding a copy of the library, for redundancy) on your studio computer. Add a backslash at the end of the folder name.
radioDB, available from http://www.mairlist.com/en/documentation/v2.0/html/, is a music database developed for mAirList by Christoph Krmer based on PostgreSQL. The original, deprecated radioDB had a web-based frontend written in PHP. radioDB2 is a complete redesign and rewrite and includes a Java client. To connect to a radioDB2 database, set the following parameters:
The database protocol to be used to connect to the SQL server, usually postgresql-7.3. You need the client library libpq73.dll. (mAirList does not support any client library newer than 7.3, but just like with MySQL, an old client library will usually work with newer server versions.)
These are the settings used to connect to the PostgreSQL server.
radioDB stores absolute filenames in the database. If your copy of mAirList runs on a different computer from which the files are accessed through a different path (for example, through a network share), you can enter this base path here. Add a trailing backslash. Also note the following option.
When you need to change the absolute file names stored in the radioDB database, mAirList can automatically strip the wrong base path from the absolute file names. If this is desired, enter the path to strip here. Afterwards, the new BaseDir will be prepended, resulting in the new absolute, correct file name.
If your radioDB installation runs on a Linux server, the file names will contain slashes (/) instead of backslashes (\) to delimit directory names. If so, enter / here, and mAirList will convert them back to backslashes.
An on-the-fly database is a very simple type of database. At program startup, it recursively scans a specific folder and provides these files through mAirList's database interface; you can browse the files by artist in the database browser, and you can use the database search browser to look for a certain song. The on-the-fly database reads the mAirList file tags and/or the ordinary file tags (ID3, MusiFile, Ogg Vorbis, FLAC) in order to determine the artist and title of a file. It will also detect mAirList file tags created with the Save to Tag function in the PFL or Properties dialogs.
On-the-fly databases can operate in a cached or a non-cached mode. In the non-cached mode, the directory is freshly scanned each time you run mAirList. This might take a long time depending on the number of files. In cached mode, a file named OnTheFlyCache.mlp is created in the specified directory after scanning. The next time you run mAirList, it reads this file instead of scanning the directory again. However, if you delete or add files, these changes will not be detected unless you also set the AutoRescan option; then, new files will be added to the cache file, and deleted files will be removed from it.
You can also use the Save to Database feature for saving cue points or other item meta data to the on the fly database. This information is stored in the cache file, so caching must be enabled. Note that the AutoRescan mechanism does not re-read existing files. If you save cue information to both the database cache file as well as to the file tag, the information from the cache file will have precedence.
As with any other database type, you can create multiple on-the-fly connections in case your library is distributed among several folders.
This is the directory to scan. Omit the trailing backslash.
On this page, you can specify the notification scripts to be loaded at startup. See Section 10.3, Notification Scripts for more information on these scripts.
On this page, mAirList's audio engine BASS.DLL can be configured.
If you have problems with drop-outs, or want to improve latency, try to change these values. Default is 500ms and 100ms.
BASS.DLL natively supports WAV, MP3, MP2, MP1, OGG and AIFF files. Other formats, -eg- WMA, are supported through add-ons, which can be downloaded from the BASS.DLL homepage http://www.mairlist.com/en/documentation/v2.0/html/. To activate a plugin, put the downloaded BASSxxx.dll file into the mAirList folder and enter the file name into this field. Multiple plugin names can be entered, delimited by spaces.
Sometimes, BASS.DLL does not detect all channels on a multichannel sound card, even if the speaker type is set correctly in Control Panel (Section 8.2.1, Output Devices). Setting this option disables automatic channel detection, and BASS.DLL regards every sound card as 7.1. mAirListConfig needs to be restarted to activate this behavior, and you can then select the desired channel pair in the Output Device dialog.
The last configuration page offers a number of general settings and options.
mAirList's user environment can be freely customized through the layout.ini file (see Section (...) for details). Here, you can choose which visual properties to read from that file: layout (position of screen elements), colors and/or fonts.
If you have multiple monitors attached to your computer, you can choose on which one mAirList will start up. You can also choose to use the whole desktop, -ie- all monitors at the same time.
If you have activated any BASS.DLL plugins (cf. Section 8.10, BASS.DLL), you will want the corresponding files to be displayed in the directory browsers. In this field, you can enter a number of additional file extensions, without the leading dot, separated by blanks.
By the Extra PFL function, playlist elements can be pre-listened even if they are not loaded in a player, or even if they are currently broadcasted on air in a player. This can be useful for end monitoring. Here, you can select the ouput device used by these Extra PFL players.
This is the default fading duration, from the beginning of the fade out to complete silence. This setting can be overriden for each item in the Properties dialog or by setting a Cue Out marker. Do not confuse this value with the Fade Out point marking the beginning of the fading, which must be set individually for each item.
mAirList's user interface is in English, but there are language files available for other languages (German is included in the official download archive, other languages might be added later). The localization files reside in the folder locale of your mAirList installation.
Usually, mAirList detects the language of your Windows system and loads the language file automatically (if available). If, for some reason, automatic detection does not work, or if you explicitly want to load a different language file, enter the two-letter language code here (this code corresponds to the name of the subdirectory of the locale folder containing the message file). The configuration dialog is also translated, but you have to restart mAirListConfig in order for the change to take effect.
The main file extensions used by mAirList are .mlp
(mAirList playlist) and .mlt (mAirList template). Pressing the button Register, you can
associate these two file types with mAirList so that mAirList.exe will be run automatically when you double click such a file in Windows Explorer. The button Unregister will remove the association.
Some mixers allow to switch from PFL mode to START mode with the press of just one button. The fader start signals will then reach mAirList in an undetermined order. If the START signal preceeds the PFL OFF signal, mAirList will not start the player, as it is still in PFL mode. This options forces mAirList to stop PFL as soon as a START command is received.
Uncheck this option to disable the Extra PFL system.
If checked, mAirList will read the Comment field from ID3 or similar file tags and copy the content to the internal Comment/Description field of the playlist item.
MusiFile is a special MP2 audio format containing meta data in which you can also store cue markers. If checked, the Outro cue markers will be imported as Fade Out points, otherwise as Outro points.
mAirList allows you to set a number of advanced options manually in the configuration file mAirList.ini, which you can open with your favorite text editor (e.g., Windows Notepad).
You can specify the default directories for the various open file dialogs by adding the following section to your mAirList.ini:
[DefaultDirectories]
AddDirectoryBrowser=M:\music
AddDirectoryTreeBrowser=M:\music
AddPlaylistBrowser=C:\playlists
OpenPlaylist=C:\playlists
AppendPlaylist=C:\playlists
RunScript=c:\scripts
InsertFiles=M:\music
SavePlaylist=C:\playlists
SchedulerSelectScript=c:\scripts
SchedulerSelectFile=M:\music
SchedulerSelectPlaylist=C:\playlists
SchedulerLoadList=C:\events
SchedulerSaveList=C:\events
CartwallLoad=C:\cartsets
CartwallSave=C:\cartsets
A default value for a specific dialog can be disabled by deleting its entry from mAirList.ini.
If you are running a customized layout (created with layout.ini, you might want to change the way the two toolbars (above the playlists, and above the browsers) look. This can be done by adding the sections [Toolbar] and/or [BrowserToolbar] to your mAirList.ini file and setting one or more of the following parameters.
First, you can choose whether the text below the icons should be displayed (Captions, default on). You can also set the toolbar into list mode, in which smaller icons are used, and the captions (if enabled) are displayed at each icons's right hand side, rather than below the icon (List, default off). Finally, the parameter AutoSize (default off) specifies whether each button should shrink to its minimum required space. This should be set to on when having List mode enabled or Captions disabled.
Here's an example for the main toolbar, with small icons and no captions:
[Toolbar]
List=on
Captions=off
AutoSize=on
Additionally, you can selectively hide each single button in the toolbar. For the main toolbar, this is done with the following settings (the Separator entries refer to the vertical separator lines in
the toolbar):
ShowSeparator0=off
ShowNew=off
ShowOpen=off
ShowSave=off
ShowSeparator1=off
ShowInsert=off
ShowProperties=off
ShowDelete=off
ShowSeparator2=off
ShowEvents=off
ShowCartwall=off
ShowSeparator3=off
ShowAbout=off
The respective values for the browser toolbar are:
ShowAdd=off
ShowRefresh=off
ShowClose=off
Table of Contents
mAirList has a built-in event scheduler which allows you to execute actions periodically at user-defined time. These actions include:
Inserting and/or play files into the playlist.
Loading playlists.
Running scripts (see Chapter 10 Scripting).
Executing fader start commands.
Events are managed through the Event Scheduler dialog, which can be accessed by the Events button in the main toolbar. In case of multiple playlists, there are also multiple event schedulers, and a dropdown menu will appear which lets you choose the desired one. In automation mode, you can also click the rectangle marked E on the right hand side of the playlist tool bar.
The dialog will display the list of events, ordered by next execution. You can open and save the event list in .mle format and also clear the entire list by clicking New. Clicking
Add or Edit will open the event editor dialog, which is described in the following section.
The Edit Event dialog lets you edit an event, i.e., defining the date and time rules for execution, and specifying the action.
This is an optional field which lets you describe what the event does. It is meant for easier administration and documentation.
Next, specify on which days the event should be executed. You can choose whether to run the event each day, only on certain weekdays, only once (a year) or at user defined days.
In the user-defined fields, you can enter lists and/or ranges of values. The allowed values are 1..31 for the day, 1..12 for the month and 1..7 (monday through sunday) for the week day. Use a comma to separate values and a hyphen to define ranges. Lists and ranges can be mixed. Examples (for the weekday field): 1 (only monday), 1-5 (monday through friday), 2, 5-7 (tuesday, friday, saturday and sunday).
Specify the time at which the event should be executed. The options are: each hour at a given minute and second; only once a day at a given time; or user defined. See the data section above for the format for the user defined fields. The allowed intervals are 0..23 for hour, 0..59 for minute and 0..59 for second.
If an event is supposed to expire at a given time, you can specify the date and time here. Otherwise, it will run forever.
The Event Scheduler is most useful in automation mode to schedule items and playlists. However, it can also be used in assist mode. You can specify for each single event whether to be run in automation and/or assist mode.
Finally, specify the action to take when the event occures. Most actions require a parameter (e.g., filename) to be specified in the Parameter field appearing below. The following options are available:
No action is taken. This is useful for testing purposes, or for disabling an event temporarily.
A file is inserted into the playlist and played automatically. This does only work in automation mode, and corresponds to the steps (1) insert a file after the one currently playing and (2) clicking NEXT.
Inserts a file into the playlist, but does not play it immediately. In case automation is enabled, it will be played when the current item is finished.
Load a playlist (.mlp/.mlt or .m3u format). The current playlist is replaced, but the item currently playing will not be removed until it is finished.
As above, but the playlist is automatically started by issuing a NEXT command to the automation. Does only work in automation mode.
Appends a playlist at the end of the current one.
Runs a mAirListScript script. See Chapter 10 Scripting.
Executes a faderstart command.
Table of Contents
mAirList offers a built-in scripting language, mAirListScript. In this section, an overview over the functionality of mAirListScript is given. A complete reference can be found in Appendix A, mAirListScript Reference.
A notification script is a special kind of script which is called automatically by mAirList in certain situations, for example at program startup, when a player is started or stopped, or when the playlist accidently runs empty in automation mode. By the means of a notification script, you can react on these conditions, fix the situation, or implement custom logging functionality.
Notification scripts are activated in the configuration dialog (see Section 8.9, Scripting). When mAirList starts up, each script is loaded and compiled, and a ntMask notification is sent to the script, asking to specify the notification types to be passed to that script. For example, a logging script would mask out any notifications but the player was started one.
Table of Contents
The general reference for all functions, types and interfaces can now be found in an external CHM file available on the mAirList homepage.
TNotificationType = (...)
The type of a notification, determined by the GetNotificationMethod of the INotification interface. See Section A.2.4, Notification Types for a list of all notification types and their parameters.
TNotificationTypes = set of TNotificationType
A set of TNotificationType, used to specify the relevant notification types by calling the the SetNotificationTypes procedure.
procedure SetNotificationTypes(iValue: TNotificationTypes)
Use this procedure to specify the notification types to be passed to this script, masking out any other notification type. Calling this procedure should be done on receiving the ntMask event, usually at program startup. Although optional, masking out notification types can reduce overhead, as each script is only called for the notifications relevant to it. By default, any notification is passed to the script.
function GetNotification: INotification
Returns the INotification interface of the current pending notification. This should be done right at the beginning of the script, in order to determine the notification type.
The INotification interface represents a single notification. It is obtained by the GetNotification function, which should be done at the beginning of each notification script.
Each notification has a type, and possibly goes along with a number of parameters and a number of interfaces. See Section A.2.4, Notification Types for the exact parameters and interfaces of each notification type.
The following methods are declared:
function GetNotificationType: TNotificationType
Returns the type of the notification.
function GetParameterCount: integer
Returns the number of parameters.
function GetParameter(iIndex: integer): variant
Returns a specific parameter. The variant type is automatically type-casted to the appropriate type inside the script.
function GetInterfaceCount: integer
Returns the number of interfaces.
function GetInterface(iIndex: integer): IInterface
Returns a specific interface. Note that you have to manually cast the IInterface result of this function into the correct interface type (e.g., IPlayer or IPlaybackControl).
This notification is sent at program startup. The script should react by calling SetNotificationTypes and thus setting the set of notifications to be passed to it. No parameters.
Called when startup of mAirList has been finished, after loading of default playlist and event list files. No parameters.
Called when a player is started.
Table A.1. ntPlayerStart parameters and interfaces
| Parameter/Interface | Type | Description |
|---|---|---|
| Interface 0 | IPlayer |
The player which was started. |
| Interface 1 | IPlaylistItem |
The item which is loaded in the player (and is now playing). |
Called when a player is stopped.
Table A.2. ntPlayerStop parameters and interfaces
| Parameter/Interface | Type | Description |
|---|---|---|
| Parameter 0 | int64 |
Effective broadcasted duration, in mAirList units (1/10,000,000 seconds). |
| Interface 0 | IPlayer |
The player which was stopped. |
| Interface 1 | IPlaylistItem |
The item which is loaded in the player. |
Called when a player reaches the configured amount of time before the fade out, cue out or end of file marker. EOF warning must be enabled for the player in the configuration.
Table A.3. ntEOFWarning parameters and interfaces
| Parameter/Interface | Type | Description |
|---|---|---|
| Interface 0 | IPlayer |
The player which is warning about EOF. |
| Interface 1 | IPlaylistItem |
The item which is loaded in the player. |
Called when a cart player is started.
Table A.4. ntCartPlayerStart parameters and interfaces
| Parameter/Interface | Type | Description |
|---|---|---|
| Interface 0 | IPlayer |
The cart player which was started. |
| Interface 1 | IPlaylistItem |
The item which is loaded in the player (and is now playing). |
Called when a cart player is stopped.
Table A.5. ntCartPlayerStop parameters and interfaces
| Parameter/Interface | Type | Description |
|---|---|---|
| Parameter 0 | int64 |
Effective broadcasted duration, in mAirList units (1/10,000,000 seconds). |
| Interface 0 | IPlayer |
The cart player which was stopped. |
| Interface 1 | IPlaylistItem |
The item which is loaded in the player. |
Called when a cart player reaches the configured amount of time before the fade out, cue out or end of file marker. EOF warning must be enabled for the cartwall in the configuration.
Table A.6. ntCartEOFWarning parameters and interfaces
| Parameter/Interface | Type | Description |
|---|---|---|
| Interface 0 | IPlayer |
The cart player which is warning about EOF. |
| Interface 1 | IPlaylistItem |
The item which is loaded in the cart player. |
Called when a player (normal player, cart player or Extra PFL embedded player) goes into PFL mode.
Table A.7. ntPlayerPFLOn parameters and interfaces
| Parameter/Interface | Type | Description |
|---|---|---|
| Parameter 0 | integer |
The number of players now in PFL mode. |
| Interface 0 | IPlayer |
The player which is now in PFL mode. |
Called when a player's (normal player, cart player or Extra PFL embedded player) PFL mode is deactivated.
Table A.8. ntPlayerPFLOff parameters and interfaces
| Parameter/Interface | Type | Description |
|---|---|---|
| Parameter 0 | integer |
The number of players now in PFL mode. |
| Interface 0 | IPlayer |
The player which is no longer in PFL mode. |
This notification is sent when a playlist runs empty in automation mode. It is called as soon as the last item in the playlist is faded (or stopped, in case no fade out time has been specified). You could react on this notification by
loading an emergency playlist with IPlaylist.Load.
Table A.9. ntPlaylistEmpty parameters and interfaces
| Parameter/Interface | Type | Description |
|---|---|---|
| Interface 0 | IPlaybackControl |
The PlaybackControl whose playlist has run empty. |
| Interface 1 | IPlaylist |
The PlaybackControl's playlist, for convenience. It can also be obtained with IPlaybackControl.GetPlaylist
|
Table of Contents
This appendix contains a list of all settings that can be made trough the skin.ini file.
All colors are given as HTML colors, -ie- as a six-digit hexadecimal number, prefixed by #.
All fonts consist of four settings: Name, Size, Style and Color. For example, each player has a font setting for
NameFont, so the values to specify are NameFontName, NameFontSize, NameFontStyle and NameFontColor. The font name is specified as a string, the size as a postive integer value, the color as an HTML color (see above) and the style as an integer value by adding one or more of the following values: 1=bold,
2=italic, 3=underlined, 4=strikeout.
All dimensions are given in pixels as a positive integer number.
Section name for ordinary players: [Playerx_y], where x is the playlist number (starting with 0) and y the player number within this playlist (starting with 0).
Section name for the cartwall players: [Cartwall]
Section name for the Extra PFL player: [ExtraPFL]
You can also create a section called [Player]. Settings in that section will be taken as the default values for all players (except for the cartwall) and can be overwritten in the specific player sections.