v 0.249! adding a Channel that already exist will remove the old channel properly before.! renamed function channelPosSet to channelPosSetByte! renamed function channelPosGet to channelPosGetByte+ Added function channelPosSetMS+ Added function channelPosGetMS+ Added check if a channel really exists for all functions+ Fixed bug with Saving games crashing the games under certain conditions

v0.236 - Initial Release

============Description / Usage============

aMUSE v0.284============

aMUSE is a Plugin that replaces the WME Internal music system. It also supports serialization anddeserialization ( saving and loading games ). This PlugIn is using the BASS Audio Library ( bass.dll ), pleasenote that you need to buy a License if you want to use BASS on a commercial Project. Same goes for the MP3 De-coder included in BASS. See bass_license.txt for further information.

The main purpose for me was, that it was note possible with WME to play a number of music files 100%synchronous, they always were 10-50 ms asynchronous. The following fileformats are supported ( accordingto the Author of BASS Library, I did not test them all WAV/AIFF/MP3/MP2/MP1/OGG/XM/IT/S3M/MOD/MTM/UMX

I'm using this for example, to fade-in an additional musictrack containg just a single instrument whenthe Character starts walking.

Please note that this Plugin is under heavy development, may contain bugs and hidden features Use at your own risk.

To use this plugin, you should write the following lines in your scripts:

// base.inc global muse;

// game.script, in the on "QuitGame" Section { // quit the game muse.shutDown(); // <--- ADD THIS LINE Game.QuitGame(); }

// game.script, or where ever you want to initialize the music system, add:muse = new aMUSE();

====== crossFade(int chanFrom, int chanTo, int value);Crossfades from Channel <chanFrom> to Channel <chanTo> in the given Amount of <time> (milliseconds);The Target Channel will have the same volume after crossfading as the source channel had.

*********** POSITIONING FUNCTIONS ***********======= channelPosSetByte(int ChannelNo, string Value);Sets the Byteposition of Channel <ChannelNo>. The string has to represent a valid number ( will be converted to unsigned long long.

WME Lite is actually build with the BASS Library, the same that wme_aMUSE Plugin uses, so you could code your functions yourself if you need them. I don't know about WME2 .

I'll add the possibility to get / set music position with time soon. I don't know whats the smallest unit is, I guess it will be milli or microseconds.The new Version will be available tonight or tomorrow .

Since WME Lite does not support Plugins, it would not make sense. WME Lite already uses BASS Library for Audiooutput, so I personally think, it's not necessary to port aMUSE to WME Lite.

If ScummVM is working, and RotT is ready, we'll port it to scummVM for sure, because there are other things we have to rework ( like video playback for example ).

Greets,

Spellbreaker

Hello.

I guess certain features could be added to the WME Lite based engine for ScummVM if being necessary, that's something already discussed in the ScummVM forums. I'm not sure about what does aMUSE plugin does or how it works internally (by the name, I guess it adds imuse-like features to the audio subsystem), that's something you know for sure. AGS engine implemented back plugins back into the main code (this is mostly done by the JJS fork, focused on portability to platforms like Android/PSP/iOS).

But why removing improvements the aMUSE plugin offered to WME instead of adding them to Wintermute's ScummVM?

BASS is not available for certain platforms ScummVM is ported to, also isn't open source at all. It's going to be replaced by different code, and I see there's quite probably available source code for play those audio file formats that could be adapted to ScummVM too. Except mod formats (that are being used by some few games from other engines like AGS. there's a WIP implementation by fuzzie) it seems most of them are already implemented by own code or external dependencies like libraries.

I ask if you and/or your development team are open to collaboring in some way, like adding the necessary features so users can be able to play games like this in all it's glory with the cool features aMUSE provides or giving information so another developer could reimplement the aMUSE features. The code is there in Github

I would not like to see a stripped down version because lack of features in WME's ScummVM, it would be cool to see the engine with the improvements you made and play the game in all it's glory. Also, this can be a great opportunity for the Wintermute community to have the games available on lots of different platforms (a more democratic way, so the user can choose where to play the games on).

It's just a personal question because I'm quite interested in RotT as a game to play and would like to be able to play it in ScummVM. It's a comfortable way to play games, also able to play them on my Wii or Linux box (and continue on a portable platform like Android) makes gaming a lot easier when moving.

Sure I would help, but I don't know what I could help. You know, the only Problem with WME was that it was not possible to play several ogg tracks synchronously. Thats why I made aMUSE ( it's clearly NOT a iMUSE, it's more than a name-joke ). You can see what aMUSE can do in the first post.

Since now WME Lite depends on BASS, I guess the Sync-problem does not exist anymore, and I don't think it will exist in the ScummVM port of WME Lite.

Sure I would help, but I don't know what I could help. You know, the only Problem with WME was that it was not possible to play several ogg tracks synchronously. Thats why I made aMUSE ( it's clearly NOT a iMUSE, it's more than a name-joke ). You can see what aMUSE can do in the first post.

Since now WME Lite depends on BASS, I guess the Sync-problem does not exist anymore, and I don't think it will exist in the ScummVM port of WME Lite.

Greets, Spellbreaker

Well, the work is in WIP state. He's in a GSoC task, so not sure about that.

I guess extensive testing of Wintermute's games will be necessary, for example. Also, a game development team (and others too) could collaborate to guide in a practical way about the features or things to improve in the engine itself.

Anyway, maybe it's still too early. We'll see the results and then things will happen when the task is done and the engine merged to the main ScummVM code base.

EDIT: There's a reply from somaen (the student behind the GSoC task of porting WME Lite to the ScummVM infraestructure) that looks quite positive here. You may read it if you want, I put a copy here for making it easier...

Quote from: somaen

Hi I'm the guy doing the wintermute-port for ScummVM as GSoC this summer.

Quote from: Spellbreaker

So, if you really get Video Playback running on WME Lite, I would absolutely port the game to WME Lite. ( e.g. 1024x768 resolution, and dropping some music effects due to the wme amuse plugin).

Given the current progress, I'm quite sure that movie-playback will be integrated along with the rest of the engine, perhaps even some more of the removed features from Wintermute.

Now, plugins as plugins are not doable for ScummVM, as ScummVM is supposed to be quite portable. BUT, that doesn't mean the end, I can always integrate whatever plugins people have used into the engine in some way, as long as I can get the source code for the plugin (and that source code released under GPLv2).

I don't really know if there are other roadblocks for compatibility, as I haven't tested a wide range of games against WME Lite yet (nor compared them to WME full). The only other one I can come up with, is using system fonts, those won't be available on most platforms ScummVM runs on, so your game should preferably contain it's own fonts in the data files.