use direct ByteBuffer instead of java byte[] array.
better audio reading and writing.
The microphone implementation doesn't call python right away, but write on a RingBuffer instead. And the ringbuffer is pulled as much as possible. This avoid the GIL to be taken in the audio/mic thread.
The audio writing is more efficient, lag is reduced. Instead of filling manually the buffer to prevent underrun, the thread is now reading the ringbuffer. If no data is available, it will return a blank buffer. It doesn't prevent underrun, but it reduce the lag a lot. :)
So now, call AudioInput.poll() regulary.