running gui and audio on separate threads

they can't interact, i think. going to try a merged monad approach or
a IO arrow next