]>
vault307.fbx.one Git - Sensory_Wall.git/blob - circuitPython/audioLEDvis.py
1 from array
import array
3 from time
import monotonic
4 from supervisor
import reload
6 from audiobusio
import PDMIn
8 import adafruit_is31fl3741
9 from adafruit_is31fl3741
import PREFER_BUFFER
10 from adafruit_is31fl3741
.adafruit_rgbmatrixqt
import Adafruit_RGBMatrixQT
11 from rainbowio
import colorwheel
12 from ulab
import numpy
as np
13 from ulab
.scipy
.signal
import spectrogram
15 i2c
=I2C(board
.SCL
,board
.SDA
,frequency
=1000000)
17 is31
= Adafruit_RGBMatrixQT(i2c
, allocate
=PREFER_BUFFER
)
19 is31
.set_led_scaling(0x19)
20 is31
.global_current
=0x03
23 heatmap
=[0xb000ff,0xa600ff,0x9b00ff,0x8f00ff,0x8200ff,
24 0x7400ff,0x6500ff,0x5200ff,0x3900ff,0x0003ff,
25 0x00a6ff,0x00b7ff,0x0066ff,0x007eff,0x0093ff,
26 0x00e0ff,0x00e6fd,0x00ecf6,0x00f2ea,0x00f6d7,
27 0x00ff16,0xaaff00,0xb8ff00,0xc5ff00,0xffab00,
28 0xedff00,0xf5eb00,0xfcd600,0xffc100,0xff0000,
29 0xff9500,0xff7c00,0xff6100,0xff4100,0xff0000,
33 mic
=audiobusio
.PDMIn(board
.D8
,board
.D9
,sample_rate
=16000,bit_depth
=16)
35 samples_bit
=array
.array('H',[0]*(fft_size
+3))
38 offset
=max(0,(13-len(data
))//2)
40 for x
in range(min(13, len(data
))):
41 is31
.pixel(x
+offset
,y
,heatmap
[int(data
[x
])])
49 mic
.record(samples_bit
,len(samples_bit
))
50 samples
=np
.array(samples_bit
[3:])
52 spectrogram1
=spectrogram(samples
)
53 spectrogram1
=np
.log(spectrogram1
+ 1e-7)
54 spectrogram1
=spectrogram1
[1:(fft_size
//2)-1]
56 min_curr
=np
.min(spectrogram1
)
57 max_curr
=np
.max(spectrogram1
)
63 min_curr
=max(min_curr
,3)
65 data
=(spectrogram1
-min_curr
)*(51./(max_all
-mi_curr
))
67 data
=data
*np
.array((data
>0))