group_start = time.time();
    packet_start = group_start;

    while (True):
        for i in range(packet_count):
            try:
                sock.send(next(packet_data))
                packet_start += packet_period
                packet_sleep = packet_start - time.time()
                if packet_sleep > 0:
                    time.sleep(packet_sleep)
            except Exception as e:
                sys.stderr.write('E')
                print(e)
                time.sleep(1)

        group_stop = time.time()
        sample_count = packet_count * packet_samples
        sample_time = group_stop - group_start
        group_start = group_stop
        sys.stderr.write('{0} Hz\n'.format(int(sample_count / sample_time)))


if __name__ == '__main__':
    if len(sys.argv) != 4:
        sys.stderr.write('Usage: {0} <spark ip> <spark port> <audio file>\n')
    else:
        data = convert_buffer(read_sound(sys.argv[3]))
        stream_buffer(sys.argv[1], int(sys.argv[2]), data)
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

import numpy
import pysoundfile
import sys


from make_sample import convert_buffer, read_sound


def write_bin(path, data):
    fp = open(path, 'wb')

    # Write bytes MSB first
    data = data.astype(numpy.dtype('>u2'))

    for i in range(0, data.size, 1024):
        fp.write(data[i:i + 1024].tostring())

    fp.close()


if __name__ == '__main__':
    if len(sys.argv) != 3:
        print('Usage: {0} audio_sample.ogg audio_sample.bin')
    else:
        sound = read_sound(sys.argv[1])
        data = convert_buffer(sound)
        write_bin(sys.argv[2], data)