summaryrefslogtreecommitdiff
path: root/tests/circuitpython-manual/audiobusio/i2s_sample_loop.py
blob: c0ee5de3155e78cc9047a4407d3074d52114e0fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import audiocore
import audiobusio
import board
import digitalio
import array
import time
import math
import rp2pio
import adafruit_pioasm

time.sleep(10)

trigger = digitalio.DigitalInOut(board.D4)
trigger.switch_to_output(True)

# Generate one period of sine wav.
length = 8000 // 440

# signed 16 bit
s16 = array.array("h", [0] * length)
for i in range(length):
    s16[i] = int(math.sin(math.pi * 2 * i / length) * (2 ** 15))
    print(s16[i])

sample = audiocore.RawSample(s16, sample_rate=8000)

dac = audiobusio.I2SOut(bit_clock=board.D10,
    word_select=board.D11, data=board.D12)

trigger.value = False
dac.play(sample, loop=True)
time.sleep(1)
dac.stop()
trigger.value = True

print("done")