Current Music Engine in Vega Strike

For collaboration between the different artists creating music and sound for vegastrike.
Post Reply
Mike Ducharme
Merchant
Merchant
Posts: 62
Joined: Sun Jan 23, 2005 5:39 am
Location: Winnipeg, Canada
Contact:

Current Music Engine in Vega Strike

Post by Mike Ducharme »

I'd like to get a Wiki page assembled that has a nice explanation of the current music engine in the game that composers would be writing to. Ogg files, m3u playlists, what m3u playlists are there, how is music selected from those playlists (random or in order), how are transitions controlled, etc) as well as what the plans or tentative plans are for future development of the music engine.

Those types of things are very important to composers writing for the game, and I don't even have a good understanding of all those myself.

Oblivion and/or Klauss - could you guys reply and provide some of that information or let me know where I can find it.. I could then arrange it together into a nice wiki page.

Thanks!

Mike
Oblivion
Artisan Extraordinaire
Artisan Extraordinaire
Posts: 1269
Joined: Tue Mar 21, 2006 10:55 am
Location: Philippines

Post by Oblivion »

Sorry, no idea. :oops: Klauss is the one to ask. It was the reason why I first got worked up about VS's music.. too many playlists. But whatever Klauss decides now, I'll back it up.
A Step Into Oblivion

Dreams of things that will never be,
Songs of thoughts only I can hear,
Leave me be to sleep forever,
To dream my dreams,
And sing my hymns,
Of things that will never be...
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Post by klauss »

Quickly, soundserver.exe handles playing songs, while VegaStrike.exe handles sequencing them, using the defined playlists (which are selected according to the situation by dj_lib.py).

The soundserver uses SDL to play them, which supports .mp3, .ogg, .wav, I don't think it supports flac (perhaps on Windows), and it does support .mid (but I have the feeling it will get dropped, at least temporarily, during the soundsystem rewrite, as supporting midi with only OpenAL is simply impossible - we'll get something later, though, don't despair).

.m3u lists are just like winamp lists, which are a bunch of files, each on its own line (relative paths are computed against where soundserver.exe is, which is usually inside the bin folder - and usually you want to always say ../music/something ), and you can add comments (on their own line, I don't think it works on the same line) by starting the line with '#'.

Eventually, we'll add sequencing commands to playlists, disguised as special comments (probably '#!<command>') - that will allow us to specify a bayesian network for the tracks, with (potentially) custom transition - that means, each track can have a certain subset of tracks follow it, with a certain assigned probability. That's not that far in the future, it needs not wait for the rewrite, as it's doable as an enhancement to the current engine.

Playlists are stored in the user-data folder (usually under ~/.vegastrike), inside their own folder hierarchy (~/.vegasrtike/playlists).
Inside playlists, you may find additional grouping, by situation:
  • * battle
    * peace
    * threat
Inside each, you'll find a playlist for each faction. Usually, the faction is selected according to the system owner at the time battle/threat/peace happens, though inside peace you'll have also around_sig and away, which get selected according to whether you are near a significant unit (base or planet - dockable) or not.
That all gets configured in dj_lib.py, so if you add playlists, you have to add them to dj_lib.py as well - I doubt anyone will have to add playlists, though.

Inside playlists, you can (currently - until the extension commands get added) bias the frequency of some tracks by simply repeating them on the playlist. The engine will avoid playing the same track over and over, having a record of recently played tracks.

I could wiki this in a while (long, short, I don't know - so if anyone wants to do it first, you're welcome, just post here so that I know where it is, and can take a look and fix anything). Wikying stuff is a lot more work than plaintext posts, ain't it?

I hope it's clear - any doubts, just ask.
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
Mike Ducharme
Merchant
Merchant
Posts: 62
Joined: Sun Jan 23, 2005 5:39 am
Location: Winnipeg, Canada
Contact:

Post by Mike Ducharme »

Excellent! I've added that stuff to the Wiki:

http://vegastrike.sourceforge.net/wiki/ ... ment:Audio

Take a look and make sure it's OK.. make edits as needed.

Mike
Post Reply