![]() |
|
IL-2 Sturmovik The famous combat flight simulator. |
![]() |
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
![]()
Maybe I miss-understood...
The game has it's own OGG codec... The game exe process probably locks the audio functionality, so you won't be able to unlock the audio without shutting the game down. sorry!
__________________
![]() |
#2
|
|||
|
|||
![]()
Would be nice if it would unlock files its done using. Audio files it hasn't yet used are unlock until used. I understand locking a file in use, but when done playing it (over the radio) it should be unlocked.
|
#3
|
|||
|
|||
![]()
Can I ask what you're trying to achieve here? Are you looking to have some sort of dynamic radio station by swapping out files on-the-fly?
Personally I would like to see this particular bit of functionality expanded slightly, or even just fixed. The fact that the randomisation of music in IL2 is utterly broken(I.E. just plays in sequence) makes it much less usable than it could be. |
#4
|
|||
|
|||
![]()
Yes. I have a routine to randomize the files but it requires the files to be unlocked. Right now it works only before the game. During the game only the files that haven't been used can be changed.
|
#5
|
|||
|
|||
![]()
I have a workaround for you; IL2 plays files in alphabetical order, this enables you to use a prefix(aaa, 001, etc) to determine the order files are played in.
If you use a high id(zzz, 999, etc) for the first file you play, you can later add files with a lower ID which will be played first. IL2 refreshes the radio folder(I.E. starts from the first song) every time you tune to that station. This should enable you to add new files while in flight, even if it doesn't allow for fully automated randomisation. Keep in mind, using console(Shift-Tab) command "MUSIC PLAY STOP" skips to the next song in the alphabetical order, so you can't skip backwards or to new songs. You can however play the first song in the directory using "MUSIC PLAY PATH [path to radio station directory]". This has the same effect as switching from and to the station. |
#6
|
|||
|
|||
![]()
I'll see what I can do with that knowledge.
But your comment about starting with say '999' as the title begs the question of how do you determine the first song? Or are you assuming only the one song in the folder and its called '999'... |
#7
|
|||
|
|||
![]()
The method I would use is this:
Music in a subfolder of the station you're using has an underscore prefix(I.E. "_artist - song.wav"). When you're ready to change songs, you move the .wav file you need to the radio station directory and rename it with the prefix you're using by replacing everything in front of the underscore with the next ID(If 999 is playing, rename to "998_artist - song.wav") and refresh the station. This can be done using a keyboard macro to press the previous/next radio station buttons in sequence, or by having it open the console and using the proper command(This method has the issue of momentarily pausing the game while you're typing to the console, which needs some delay to properly register all keypresses). After the game exe stops and the files are unlocked, move them back to their subdirectory so you can repeat the cycle next time the game is started. This is why I propose the underscore(or other symbol) prefix, so you can easily rename the files without worrying about what they're currently called. Moving the files will also ensure no song is played twice within one session of play. You could also move recently played files to a seperate directory and move them back when they haven't been played for a while(applying a datestamp when you move them) if you're hearing the same music too often. Randomly picking a song to start with could be done by counting the .wav files in the folder you're looking to play, then generating a random number within the file count and playing the file corresponding with that number. Your program/script would be running along with the game keeping track of what number is next in the cue. Alternatively you could have it check which numbers are already in the radio station directory. The latter allows you to only run the program/script when you're actually switching song, but requires reading all file names each to you do run it as opposed to just getting a numeric value from a variable. Perhaps the biggest question surrounding this problem is when to actually switch songs. I don't know of a way to determine when a song has stopped playing within IL2. In theory you could have it trigger when the next file in the cue is read(I.E. when file "998_artist - song.wav" is done, IL2 should read "999_artist - song.wav", this does require an exception when only one file is currently present). Provided already played songs aren't read directly from memory, you could monitor the filesystem to see when the next file is read. A much easier method is to use a set interval, or a keypress(which would allow you to skip songs). I will say the theoretical part of the problem is solvable, but I personally lack the programming experience to tackle the practical side(especially the filesystem voodoo). |
![]() |
|
|