fixed communicator so it works with multiple pair of speakers/listeners in any order. not sure why forks dont execute when thread.fork(). only continues execution when joined is called..