summaryrefslogtreecommitdiff
path: root/tests/circuitpython-manual/audiobusio/i2s_sample_loop.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/circuitpython-manual/audiobusio/i2s_sample_loop.py')
-rw-r--r--tests/circuitpython-manual/audiobusio/i2s_sample_loop.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/circuitpython-manual/audiobusio/i2s_sample_loop.py b/tests/circuitpython-manual/audiobusio/i2s_sample_loop.py
new file mode 100644
index 000000000..c0ee5de31
--- /dev/null
+++ b/tests/circuitpython-manual/audiobusio/i2s_sample_loop.py
@@ -0,0 +1,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")