""" mixgo_zero Zi Voice Onboard resources Micropython library for the mixgo_zero Zi Onboard resources ======================================================= #Preliminary composition 20230818 dahanzimin From the Mixly Team """ import ustruct import time import music_spk import es8374 from machine import Pin, I2S from mixgo_zero import onboard_i2c sample_rate = 22050 ob_code = es8374.ES8374(onboard_i2c) time.sleep(0.2) #ps 特殊改双全工i2s支持 ob_audio = I2S(0, sck=Pin(39), ws=Pin(41), dout=Pin(42), din=Pin(40), mck=Pin(38), mode=I2S.RTX, bits=16, format=I2S.MONO, rate=sample_rate, ibuf=20000) spk_midi = music_spk.MIDI(ob_audio, sample_rate) def u2s(n): return n if n < (1 << 15) else n - (1 << 16) def sound_level(): buf = bytearray(100) values = [] ob_audio.readinto(buf) for i in range(len(buf)//2): values.append(u2s(buf[i * 2] | buf[i * 2 + 1]<<8)) return max(values) - min(values) def play_audio(path): file = open(path, 'rb') header = file.read(44) if header[8:12] != b'WAVE': raise Error('not a WAVE file') _rate = ustruct.unpack('