Automatically drop Idents into playlist during automation?

Hi,

Is it possible to get mAirList to play an ident from a list of say 5 different ones after every one or two songs?
So basically if I have a playlist of songs, can I get mAirList to insert a sweeper/ident like this:

Song
IDENT
Song
Song
IDENT
Song
IDENT
Song
IDENT
Song
Song
IDENT

…but not necessarily in that order (so it randomly drops sweeps/idents in after songs).

Sorry for my jumbled description of what I’m trying to achieve, my description skills are a little poor! Just trying to make playlist making a little easier!

Cheers!
Chris.

This will be a feature of the upcoming mAirListDB. mAirList itself can only play fixed predefined playlists (unless scripting is involved).

This will be a feature of the upcoming mAirListDB. mAirList itself can only play fixed predefined playlists (unless scripting is involved).
Sounds good! Can't wait to get my hands on the DB tool!

Can’t wait to find the time to work on it :wink:

Torben,

I don’t expect a straight answer to this question but do you know roughly when the database facility will be available (approximately to the nearest month or year!)?

The reason for asking is that I am keen to include the type of features mentioned in this thread (and others) and I am looking at external programs to generate a suitable playlist so it would be useful to know how much effort to put into this or to wait for the database element of mAirList.

I also need to submit my thoughts into the ‘mAirListDB wishlist’ thread - that’s on my to-do list !

Thanks

Ron.

I have finally finished and submitted my PhD thesis the day before yesterday. This means that I will now start to work on mAirListDB. A first public beta/preview could be integrated into mAirList 2.1 within the next few weeks. But it’s still a long way, and various problems might occur.

For example, I’m currently fighting against SQLite’s cautios concurrency mechanisms, which don’t allow one application to write a record while another one is reading the table. Even in the “Lite” setup (mAirListDB and mAirList on the same computer, local database file without an SQL server, no network support) people will want to run mAirListDB and mAirList at the same time.

Also, don’t expect these first version to have the same feature set as found in other software like Station Playlist Creator. The primary goal is to catch up with the features of the old eldoDB software (that is, item management and basic playlist scheduling based on rotations/folders) so that people can switch from eldoDB to mAirListDB. Thereafter, I will try to implement any reasonale feature request you might have :wink:

Torben

Thanks Torben.

Ithink we all appreciate that this is a major task and will take quite a while to integrate but from my point of view this is the missing link and will be a great enhancement to an already great piece of software.

Ron.

:o Unbelievable! There MUST (?) be a way around that!

Waitaminnit … do you really mean that (for example) mAirList is permanently reading a SQL table, or permanently has a table open? Most apps. I’ve worked on which access SQL tables do a read (OK then, a SELECT :wink: ) into some other data store so that their actual SQL access is as brief as possible.

If that is not the case here, maybe there are some WITH LOCK type SQL clauses which you might need to be using on UPDATE statements, or does SQLite not have any features like that?

BFN
CAD

My approach is to keep the result set open and use the result set object in order to retrieve the data to be displayed in the list view. This list view component is, of course, Virtual Treeview, which does not provide its own data structures but follows a “virtual” approach. In a nutshell, you provide a callback function which is called by Virtual Treeview, saying “give me the value of row 5, colum 2”. Keeping the SQL result set open, I just need to navigate to the corresponding row and fetch the value of the requested column. Very easy for me, as I do not need to cache the data. And also very fast, because the drivers only need to fetch the rows which are actually displayed. (When you have a query returning 1000 records, but you never scroll to the bottom of the list, only a small part of the records will be fetched, saving bandwith.)

As far as I understood, keeping a result set open implies keeping a transaction open. SQLite does support transactions, but granularity is very limited: As soon as one process is within a transaction, the complete database is locked for writing to other processes. This is different from “real” DBMSs, where multiple transactions only interfer with each other by the time they are commited (roughly speaking).

The only solution for SQLite is to disable transaction support. This is not a serious problem, as the SQLite variant of mAirListDB (“mAirListDB Lite”) is only meant for single PC installations where you do not write to the database from mAirList and mAirListDB at the same time. I also create a temporary table for each list view in which the results are copied prior to be displayed in the list view (CREATE TEMPORARY TABLE temp12345 AS SELECT …).

OK then, plan B ;): In the single-PC version of mAirList/mAirListDB, could you incorporate the mAirListDB app. into the main mAirList EXE file, as you already do for mAirListTag and mAirListConfig? This would (hopefully?) mean that to SQLite, you have only one application connected to it, not two applications …

Just a thought!

BFN
CAD

Yes, the database client (for both types, Lite and Pro) will be incorporated into mAirList.exe.