<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="/default.xsl"?>

<document category="Programming" title="RPGAmbient">
	<heading>RPGAmbient</heading>
	<intro>
		So, you always thought it would be neat to create some accustic background for different occasions, especially those role playing sessions you're having once a week?
		Well, for all those that can't or won't use the RPGSoundMixer, this might be of interest. Everybody else: go <link uri="http://www.rpgsoundmixer.de">here</link> first.
	</intro>
	<p>
		<link uri="download.xml">Download</link> (binaries and source)<br/>
		<link uri="manual.html">Quick Manual</link><br/>
		<link uri="tutorials.xml">Tutorial</link> (old version without editor)<br/>
		<link uri="docCompile.xml">Compiling</link><br/>
	</p><p>	
		<img src="editorscreen.gif"/>
	</p>
	<p>
		Still around? So either you're using Linux/MacOS, are a cheap sob or simply curious. Good news then, because RPGAmbient is:
		<ul>
			<li>technically available for plenty of platforms, as soon as somebody bothers to compile it</li>
			<li>free, because I'm a) too lazy to setup any payment crap and b) using FMOD</li>
			<li>available as source code, though painless compiling overrides clean coding practices</li>
			<li>described in more detail on this page</li>
		</ul>
		First off, this isn't supposed to replace "that other tool", so don't expect that I will spend the rest of my life trying to match it feature by feature.
		It is however supposed to be "good enough" for most uses. But before I go off on telling you what it can't do, maybe I better start with what it does (so far).
	</p>
	<p><b>What will it do?</b></p>
	<p>
		It can read vaguely SMIL-like xml modules describing sound events grouped by scenes. These sound events can be anything from a single song
		to multiple sound effects. If you know SMIL, the concept of parallel and sequentiell playback isn't new to you. Add "alternative" playback (randomly picking 
		from a selection of sound events) and you're set. Events are started and stopped by pressing the assigned key shortcut.
		Some possibilities for random timing are also included. 
		<ul>
			<li>Fixed and random start delays</li>
			<li>Limited or endless repeating</li>
			<li>Fixed and random pauses between repeats</li>
			<li>Fading and cross fading</li>
			<li>Randomly selected sounds</li>
			<li>Simultaneous playback of multiple sounds</li>
			<li>Open files streamed, compressed or decompressed</li>
			<li>Wildcard support to easily use lots of files</li>
			<li>"Predetermined randomness" and duration updates for correct timing</li>
		</ul>
	</p>
	<p><b>Filters and Effects</b></p>
	<p/><p>
		RPGAmbient is using what is best described as a DSP-network, which sounds rather fancy but simply means it's using FMODs channel groups
		to add any number of filters/effects anywhere you like. Basically this means that if you intend a scene to take place
		in some echo-y caves, you can add an echo-DSP to the scene rather than to every single sound event. Additionally you can
		add effects to single events, for example because you need a pitch shift on some annoyingly high whining or just want to change the volume on a
		particularly loud sound. Supported effects so far (and/or soon) are:
		<ul>
			<li>Chorus</li>
			<li>Distortion</li>
			<li>Echo</li>
			<li>Flange</li>
			<li>High pass</li>
			<li>Low pass</li>
			<li>Pitch shift</li>
			<li>Reverb</li>
			<li>Volume Variance</li>
			<li>... all the other FMOD filters, including...</li>
			<li>Custom FMOD plugins (soon)</li>
		</ul>
	</p>
	<p><b>Save and comfortable import/export</b></p><p/>
	<p>
		As it doesn't take long before you realize how incredibly annoying it is, to transfer your creations on a different machine
		(most likely your notebook), there is a simple export tool. This does nothing but checking the module for all used sound files
		and copying them to an export directory (maintaining the original directories). In order to ensure your eternal bliss, there also
		is an import tool. Dump the exported folder in the import folder, run the tool and it will do this: only copy files that don't
		exist already. If a file with the same name, but different content exists, the new file will be renamed and the xml-module is updated.
		You should never have to manually fiddle with filenames or worry about breaking your old modules.
	</p>
	<p><b>Available for everything, well, almost</b></p><p/>
	<p>
		Back to the all important platform question. Of course RPGA supports more than just Windows (else it would be a complete
		waste of time to reinvent this kind of wheel). While I can only offer binaries for Windows, anybody should be able to
		compile it for his own platform (especially since it seems that everything but Windows is shipped with a compiler and extensive
		tools and libraries). What you will need to download:
		<ul>
			<li><link uri="http://www.grinninglizard.com/tinyxml/">TinyXml</link></li>
			<li><link uri="http://www.boost.org/">Boost</link></li>
			<li><link uri="http://www.fmod.org/">FMOD</link></li>
			<li><link uri="http://www.wxwidgets.org/">wxWidgets</link></li>
		</ul>
	</p>
	<p>
		TinyXml is very harmless and entirely written in pure C/C++. No hassle and works wherever a C++ compiler is available. It's also one
		reason I started to use XML a lot more for my projects.
	</p>
	<p>
		FMOD didn't give me any trouble compiling either and seeing how it's even supporting the Nintendo Wii, I don't think this one
		will become a limiting factor to platform support.
	</p>
	<p>
		With boost, clunky comes to mind. Luckily we only need boost::filesystem, though if you feel like changing some of the code,
		you better be prepared for cursing whoever wrote it. Crashes galore if you don't disable name checking (or accidentally do it twice).
		However, it also supports lots of platforms and compilers (just make sure to exactly follow the documentation when compiling it).
		Will sooner or later be replaced when all tools use wxWidgets.
	</p>
	<p><b>What's missing?</b></p><p/>
	<p>
		Many small things. A little more comfort for the editor as well as getting rid of a few kinks. Let me know if you find
		other things that are desperately needed.
	</p>
	<p>
		Also, binaries are only available for Windows. This means you either compile it yourself or have to wait until somebody
		else is doing it. However, especially if you're using Linux you are probably quite used to that already.
		Of course, if somebody is compiling binaries for other systems and feels like sharing, just let me know and I will link to you
		or host them here.
	</p>



</document>




