update default parameters + python updates

- by default ggwave will now output 32-bit float samples
- python samples no longer use numpy
- python test now decodes payload
- fix buffer overflow in receive.py example
This commit is contained in:
Georgi Gerganov
2021-01-23 23:30:24 +02:00
parent ba8e0cd2b1
commit 105e0fd48d
7 changed files with 19 additions and 14 deletions

View File

@@ -134,7 +134,6 @@ Usage
import ggwave
import pyaudio
import numpy as np
p = pyaudio.PyAudio()
@@ -142,8 +141,8 @@ Usage
waveform = ggwave.encode("hello python", txProtocol = 1, volume = 20)
print("Transmitting text 'hello python' ...")
stream = p.open(format=pyaudio.paInt16, channels=1, rate=48000, output=True, frames_per_buffer=4096)
stream.write(np.array(waveform).astype(np.int16), len(waveform))
stream = p.open(format=pyaudio.paFloat32, channels=1, rate=48000, output=True, frames_per_buffer=4096)
stream.write(waveform, len(waveform)//4)
stream.stop_stream()
stream.close()
@@ -165,7 +164,7 @@ Usage
try:
while True:
data = stream.read(1024)
data = stream.read(1024, exception_on_overflow=False)
res = ggwave.decode(instance, data)
if (not res is None):
try:

View File

@@ -8,7 +8,7 @@ README.rst is not commited to git because it is generated from [README-tmpl.rst]
## Building
Run `make build` to generate an extension module as .so file.
You can test it then by importing it from python interpreter `import ggwave` and running `ggwave.testC(...)` (you have to be positioned in the directory where .so was built).
You can test it then by importing it from python interpreter `import ggwave` and running `ggwave.encode('test')` (you have to be positioned in the directory where .so was built).
This is useful for testing while developing.
Run `make sdist` to create a source distribution, but not publish it - it is a tarball in dist/ that will be uploaded to pip on `publish`.

View File

@@ -3,7 +3,6 @@ cimport cython
from cpython.mem cimport PyMem_Malloc, PyMem_Free
import re
import struct
cimport cggwave
@@ -43,7 +42,7 @@ def encode(payload, txProtocolId = 1, volume = 10, instance = None):
if (own):
free(instance)
return struct.unpack("h"*n, output_bytes[0:2*n])
return output_bytes
def decode(instance, waveform):
""" Analyze and decode audio waveform to obtain original payload