diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2017-08-28 19:26:17 +0200 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2017-08-29 15:56:08 +0200 |
| commit | 27738b6b1987862bad62b27e49954481b3db246e (patch) | |
| tree | ccc4ba715fa348a8f43bb60311128eb824307b09 | |
| parent | f63ce92e6009801e545d3f2d3c4c9e90acd1b491 (diff) | |
Add wav header to output
| -rwxr-xr-x | loopertrx.py (renamed from looper.py) | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -16,7 +16,7 @@ COMMAND_SIZE = 0xfe COMMAND_DATA = 0xff def mass_storage_header(data_len, cdb_len): - header = bytes([ord('U'), ord('S'), ord('B'), ord('C')]) + header = "USBC".encode('ascii') tag = random.randint(0, 1<<32 - 1) flags = 0x80 target = 0x00 @@ -58,8 +58,22 @@ def send_data(dev, data): def send_stop(dev): header = command_header(COMMAND_SIZE, 5, 0x00, 0x00) -def write_wav_header(outfile): - pass +def write_wav_header(outfile, data_size): + header_size = 44 + header = "RIFF".encode('ascii') + header += struct.pack('<i', data_size + header_size - 8) + header += "WAVE".encode('ascii') + header += "fmt ".encode('ascii') + fmt = 0x01 # PCM + nchan = 1 + rate = 48000 + fsize = 3 + bps = rate * fsize + bits = 24 + header += struct.pack('<ihhiihh', 16, fmt, nchan, rate, bps, fsize, bits) + header += "data".encode('ascii') + header += struct.pack('<i', data_size) + outfile.write(header) dev = usb.core.find(idVendor=LOOPER_VID, idProduct=LOOPER_PID) if not dev: @@ -75,7 +89,7 @@ if size == 0: sys.exit(0) with open("/tmp/dump.wav", 'wb') as outfile: - write_wav_header(outfile) + write_wav_header(outfile, size) print("Receiving ", end='', flush=True) while size > 0: bufsize = (size >= 65536) and 65536 or size |
