Update ulab to 2.1.3

This commit is contained in:
iabdalkader 2021-01-21 02:09:20 +02:00
parent b276f5a91c
commit 2a190f35c0
7 changed files with 87 additions and 45 deletions

View File

@ -1,5 +1,6 @@
import image, audio, time, array, math, ulab as np import image, audio, time
from ulab import extras, numerical from ulab import numpy as np
from ulab import scipy as sp
CHANNELS = 1 CHANNELS = 1
SIZE = 256//(2*CHANNELS) SIZE = 256//(2*CHANNELS)
@ -19,7 +20,7 @@ audio.start_streaming(audio_callback)
def draw_fft(img, fft_buf): def draw_fft(img, fft_buf):
fft_buf = (fft_buf / max(fft_buf)) * SIZE fft_buf = (fft_buf / max(fft_buf)) * SIZE
fft_buf = np.vector.log10(fft_buf + 1) * 20 fft_buf = np.log10(fft_buf + 1) * 20
color = (0xFF, 0x0F, 0x00) color = (0xFF, 0x0F, 0x00)
for i in range(0, SIZE): for i in range(0, SIZE):
img.draw_line(i, SIZE, i, SIZE-int(fft_buf[i]), color, 1) img.draw_line(i, SIZE, i, SIZE-int(fft_buf[i]), color, 1)
@ -33,20 +34,19 @@ def draw_audio_bar(img, level, offset):
while (True): while (True):
if (raw_buf != None): if (raw_buf != None):
pcm_buf = np.array(array.array('h', raw_buf)) pcm_buf = np.frombuffer(raw_buf, dtype=np.int16)
raw_buf = None raw_buf = None
if CHANNELS == 1: if CHANNELS == 1:
fft_buf = extras.spectrogram(pcm_buf) fft_buf = sp.signal.spectrogram(pcm_buf)
l_lvl = int((numerical.mean(abs(pcm_buf)) / 32768)*100) l_lvl = int((np.mean(abs(pcm_buf[1::2])) / 32768)*100)
else: else:
fft_buf = extras.spectrogram(pcm_buf[0::2]) fft_buf = sp.signal.spectrogram(pcm_buf[0::2])
l_lvl = int((numerical.mean(abs(pcm_buf[1::2])) / 32768)*100) l_lvl = int((np.mean(abs(pcm_buf[1::2])) / 32768)*100)
r_lvl = int((numerical.mean(abs(pcm_buf[0::2])) / 32768)*100) r_lvl = int((np.mean(abs(pcm_buf[0::2])) / 32768)*100)
fb.clear() fb.clear()
draw_fft(fb, fft_buf) draw_fft(fb, fft_buf)
draw_audio_bar(fb, l_lvl, 0) draw_audio_bar(fb, l_lvl, 0)
if CHANNELS == 2: if CHANNELS == 2:
draw_audio_bar(fb, r_lvl, 25) draw_audio_bar(fb, r_lvl, 25)

View File

@ -1,10 +1,13 @@
import image, audio, time, array, math, ulab as np import image, audio, time
from ulab import extras, numerical from ulab import numpy as np
from ulab import scipy as sp
CHANNELS = 2
SIZE = 512//(2*CHANNELS)
SIZE = 512//4
raw_buf = None raw_buf = None
fb = image.Image(SIZE+50, SIZE, image.RGB565, copy_to_fb=True) fb = image.Image(SIZE+50, SIZE, image.RGB565, copy_to_fb=True)
audio.init(channels=2, frequency=16000, gain=24, highpass=0.9883) audio.init(channels=CHANNELS, frequency=16000, gain_db=24, highpass=0.9883)
def audio_callback(buf): def audio_callback(buf):
# NOTE: do Not call any function that allocates memory. # NOTE: do Not call any function that allocates memory.
@ -17,7 +20,7 @@ audio.start_streaming(audio_callback)
def draw_fft(img, fft_buf): def draw_fft(img, fft_buf):
fft_buf = (fft_buf / max(fft_buf)) * SIZE fft_buf = (fft_buf / max(fft_buf)) * SIZE
fft_buf = np.vector.log10(fft_buf + 1) * 20 fft_buf = np.log10(fft_buf + 1) * 20
color = (0xFF, 0x0F, 0x00) color = (0xFF, 0x0F, 0x00)
for i in range(0, SIZE): for i in range(0, SIZE):
img.draw_line(i, SIZE, i, SIZE-int(fft_buf[i]), color, 1) img.draw_line(i, SIZE, i, SIZE-int(fft_buf[i]), color, 1)
@ -31,14 +34,21 @@ def draw_audio_bar(img, level, offset):
while (True): while (True):
if (raw_buf != None): if (raw_buf != None):
pcm_buf = pcm_buf = np.array(array.array('h', raw_buf)) pcm_buf = np.frombuffer(raw_buf, dtype=np.int16)
raw_buf = None raw_buf = None
fft_buf = extras.spectrogram(pcm_buf[0::2])
l_lvl = int((numerical.mean(abs(pcm_buf[1::2])) / 32768)*100) if CHANNELS == 1:
r_lvl = int((numerical.mean(abs(pcm_buf[0::2])) / 32768)*100) fft_buf = sp.signal.spectrogram(pcm_buf)
l_lvl = int((np.mean(abs(pcm_buf[1::2])) / 32768)*100)
else:
fft_buf = sp.signal.spectrogram(pcm_buf[0::2])
l_lvl = int((np.mean(abs(pcm_buf[1::2])) / 32768)*100)
r_lvl = int((np.mean(abs(pcm_buf[0::2])) / 32768)*100)
fb.clear() fb.clear()
draw_fft(fb, fft_buf) draw_fft(fb, fft_buf)
draw_audio_bar(fb, l_lvl, 0) draw_audio_bar(fb, l_lvl, 0)
if CHANNELS == 2:
draw_audio_bar(fb, r_lvl, 25) draw_audio_bar(fb, r_lvl, 25)
fb.flush() fb.flush()

View File

@ -62,6 +62,7 @@ OMV_BOARD_CONFIG_DIR=$(TOP_DIR)/$(OMV_DIR)/boards/$(TARGET)/
MP_BOARD_CONFIG_DIR=$(TOP_DIR)/$(MICROPY_DIR)/ports/$(PORT)/boards/$(TARGET)/ MP_BOARD_CONFIG_DIR=$(TOP_DIR)/$(MICROPY_DIR)/ports/$(PORT)/boards/$(TARGET)/
MPY_LIB_DIR=$(TOP_DIR)/../scripts/libraries MPY_LIB_DIR=$(TOP_DIR)/../scripts/libraries
FROZEN_MANIFEST=$(OMV_BOARD_CONFIG_DIR)/manifest.py FROZEN_MANIFEST=$(OMV_BOARD_CONFIG_DIR)/manifest.py
OMV_COMMON_DIR=$(TOP_DIR)/$(OMV_DIR)/common
# Debugging/Optimization # Debugging/Optimization
ifeq ($(DEBUG), 1) ifeq ($(DEBUG), 1)
@ -117,6 +118,7 @@ endif
ifeq ($(MICROPY_PY_ULAB), 1) ifeq ($(MICROPY_PY_ULAB), 1)
MPY_CFLAGS += -DMICROPY_PY_ULAB=1 MPY_CFLAGS += -DMICROPY_PY_ULAB=1
MPY_CFLAGS += -DULAB_CONFIG_FILE="\"$(OMV_COMMON_DIR)/ulab_config.h\""
MICROPY_ARGS += MICROPY_PY_ULAB=1 MICROPY_ARGS += MICROPY_PY_ULAB=1
endif endif

@ -1 +1 @@
Subproject commit a12263ba27bc9b63beb83d91bf55331af5f18ab1 Subproject commit 696b1d15e2c18e8d2004576c10a4c26803b264c0

View File

@ -0,0 +1,12 @@
/*
* This file is part of the OpenMV project.
* Copyright (c) 2013-2016 Kwabena W. Agyeman <kwagyeman@openmv.io>
* This work is licensed under the MIT license, see the file LICENSE for details.
*
* Ulab config file.
*
*/
#ifndef __ULAB_CONFIG_H__
#define __ULAB_CONFIG_H__
// Override ulab defaults here.
#endif //__ULAB_CONFIG_H__

View File

@ -296,18 +296,27 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/modules/,\
ifeq ($(MICROPY_PY_ULAB), 1) ifeq ($(MICROPY_PY_ULAB), 1)
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/extmod/ulab/,\ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/extmod/ulab/,\
code/fft.o \ code/scipy/optimize/optimize.o \
code/linalg.o \ code/scipy/signal/signal.o \
code/scipy/special/special.o \
code/ndarray_operators.o \
code/ulab_tools.o \
code/ndarray.o \ code/ndarray.o \
code/numerical.o \ code/numpy/approx/approx.o \
code/poly.o \ code/numpy/compare/compare.o \
code/ulab_create.o \
code/numpy/fft/fft.o \
code/numpy/fft/fft_tools.o \
code/numpy/filter/filter.o \
code/numpy/linalg/linalg.o \
code/numpy/linalg/linalg_tools.o \
code/numpy/numerical/numerical.o \
code/numpy/poly/poly.o \
code/numpy/vector/vector.o \
code/user/user.o \
code/numpy/numpy.o \
code/scipy/scipy.o \
code/ulab.o \ code/ulab.o \
code/vectorise.o \
code/create.o \
code/approx.o \
code/filter.o \
code/compare.o \
code/extras.o \
) )
endif endif

View File

@ -376,18 +376,27 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/drivers/,\
ifeq ($(MICROPY_PY_ULAB), 1) ifeq ($(MICROPY_PY_ULAB), 1)
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/extmod/ulab/,\ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/extmod/ulab/,\
code/fft.o \ code/scipy/optimize/optimize.o \
code/linalg.o \ code/scipy/signal/signal.o \
code/scipy/special/special.o \
code/ndarray_operators.o \
code/ulab_tools.o \
code/ndarray.o \ code/ndarray.o \
code/numerical.o \ code/numpy/approx/approx.o \
code/poly.o \ code/numpy/compare/compare.o \
code/ulab_create.o \
code/numpy/fft/fft.o \
code/numpy/fft/fft_tools.o \
code/numpy/filter/filter.o \
code/numpy/linalg/linalg.o \
code/numpy/linalg/linalg_tools.o \
code/numpy/numerical/numerical.o \
code/numpy/poly/poly.o \
code/numpy/vector/vector.o \
code/user/user.o \
code/numpy/numpy.o \
code/scipy/scipy.o \
code/ulab.o \ code/ulab.o \
code/vectorise.o \
code/create.o \
code/approx.o \
code/filter.o \
code/compare.o \
code/extras.o \
) )
endif endif