increased range of the random number generator for sound_keys to 1-20 in order to avoid serious headaches during sound programming for the client
added soundFactory module that takes care of routing the incoming data to the right controller for playing the sounds
added SampleController module that generates a list of positioned Sample players. The amount is currently fixed to 5 but can be changed easily. On play the module picks an available player and passes the given coordinates for playback. If no player is available the playback is rejected, which works somehow like a throttling effect.
added the missing PositionSample module which holds a PannerNode for positioning the sound in space. On play it creates a new AudioBufferSourceNode, positions the sound and plays it. Although creating a new BufferSourceNode for each playback might sound inefficient it actually isn't. You can only play a BufferSourceNode once and it's furthermore heavily designed to be created often, fast and high performant.
Huge client version bump! The Locator module now generates cartesian coordinates for the given location (x/y/z while y is set to 0 for now) and returns it. The App itself instantiates a soundFactory and triggers playback on received WebSocket data.