changed array broadcasting in write()

write() should now play just about any array or matrix you throw at it. However, it does not play raw bytes any more.
Dereference stream pointer only once