忘れそうな内容をメモしています

忘れっぽいのでメモ帳がわりに色々書いてます

M5StickVでbytearray型データをスピーカーで鳴らしてみる

M5StickVで音を再生する場合、wavファイルを再生する時はAudio (array = None, path = None, points = 1024)path =を指定すれば良いですが、array =にデータを指定して再生する方法が分からなかったのでmaixpyのI2Sのドキュメントを参考に試してみました。 maixpy.sipeed.com

以下コードでAボタンを押したら音(ブザーっぽい音)が鳴ります。
カメラと連動させて電子楽器的なものが作れそうです。

from Maix import I2S,GPIO
from Maix import Audio
from board import board_info
from fpioa_manager import fm

fm.register(board_info.SPK_SD, fm.fpioa.GPIO0)
spk_sd=GPIO(GPIO.GPIO0, GPIO.OUT)
spk_sd.value(1)

fm.register(board_info.SPK_DIN,fm.fpioa.I2S0_OUT_D1)
fm.register(board_info.SPK_BCLK,fm.fpioa.I2S0_SCLK)
fm.register(board_info.SPK_LRCLK,fm.fpioa.I2S0_WS)
fm.register( board_info.BUTTON_A, fm.fpioa.GPIO1 )
but_a=GPIO(GPIO.GPIO1, GPIO.IN, GPIO.PULL_UP)

tx = I2S (I2S.DEVICE_0)
tx.channel_config (tx.CHANNEL_1, tx.TRANSMITTER, resolution = I2S.RESOLUTION_16_BIT,align_mode = I2S.STANDARD_MODE)
#適当なデータを入れてみる
audio_data =bytearray([0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10])
tx.set_sample_rate (16000)
play_audio = Audio (array = audio_data)        

while True:
    if but_a.value() == 0:
        tx.play (play_audio)