summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2021-02-02 17:14:39 -0800
committerScott Shawcroft <scott@tannewt.org>2021-02-09 15:38:33 -0800
commit191b143e7ba3b9f5786996cbffb42e2460f1c14d (patch)
treef436340626a96d5fdc6d71563d5583c75e363bfd /tests
parentb19c700d4a312003b549876ab9abddc7dbb9abda (diff)
Add PWM based audio playback
See https://learn.adafruit.com/circuitpython-essentials/circuitpython-audio-out to get started. Fixes #4037
Diffstat (limited to 'tests')
-rw-r--r--tests/manual/audiocore/jeplayer-splash-16000-16bit-mono-signed.wavbin0 -> 130448 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-16000-16bit-stereo-signed.wavbin0 -> 260852 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-16000-24bit-mono-signed.wavbin0 -> 195650 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-16000-24bit-stereo-signed.wavbin0 -> 391256 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-16000-8bit-mono-unsigned.wavbin0 -> 65246 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-16000-8bit-stereo-unsigned.wavbin0 -> 130448 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-44100-16bit-mono-signed.wavbin0 -> 359468 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-44100-16bit-stereo-signed.wavbin0 -> 718892 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-44100-24bit-mono-signed.wavbin0 -> 539180 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-44100-24bit-stereo-signed.wavbin0 -> 1078316 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-44100-8bit-mono-unsigned.wavbin0 -> 179756 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-44100-8bit-stereo-unsigned.wavbin0 -> 359468 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-44100-stereo.mp3bin0 -> 65200 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-8000-16bit-mono-signed.wavbin0 -> 65246 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-8000-16bit-stereo-signed.wavbin0 -> 130448 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-8000-24bit-mono-signed.wavbin0 -> 97848 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-8000-24bit-stereo-signed.wavbin0 -> 195650 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-8000-8bit-mono-unsigned.wavbin0 -> 32646 bytes
-rw-r--r--tests/manual/audiocore/jeplayer-splash-8000-8bit-stereo-unsigned.wavbin0 -> 65246 bytes
-rw-r--r--tests/manual/audiopwmio/single_buffer_loop.py65
-rw-r--r--tests/manual/audiopwmio/wavefile_pause_resume.py39
-rw-r--r--tests/manual/audiopwmio/wavefile_playback.py36
22 files changed, 140 insertions, 0 deletions
diff --git a/tests/manual/audiocore/jeplayer-splash-16000-16bit-mono-signed.wav b/tests/manual/audiocore/jeplayer-splash-16000-16bit-mono-signed.wav
new file mode 100644
index 000000000..cd3da395b
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-16000-16bit-mono-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-16000-16bit-stereo-signed.wav b/tests/manual/audiocore/jeplayer-splash-16000-16bit-stereo-signed.wav
new file mode 100644
index 000000000..c1036475b
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-16000-16bit-stereo-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-16000-24bit-mono-signed.wav b/tests/manual/audiocore/jeplayer-splash-16000-24bit-mono-signed.wav
new file mode 100644
index 000000000..6aa6afc7a
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-16000-24bit-mono-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-16000-24bit-stereo-signed.wav b/tests/manual/audiocore/jeplayer-splash-16000-24bit-stereo-signed.wav
new file mode 100644
index 000000000..c175aaf61
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-16000-24bit-stereo-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-16000-8bit-mono-unsigned.wav b/tests/manual/audiocore/jeplayer-splash-16000-8bit-mono-unsigned.wav
new file mode 100644
index 000000000..ccf63b9c1
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-16000-8bit-mono-unsigned.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-16000-8bit-stereo-unsigned.wav b/tests/manual/audiocore/jeplayer-splash-16000-8bit-stereo-unsigned.wav
new file mode 100644
index 000000000..63aaa5b29
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-16000-8bit-stereo-unsigned.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-44100-16bit-mono-signed.wav b/tests/manual/audiocore/jeplayer-splash-44100-16bit-mono-signed.wav
new file mode 100644
index 000000000..147b14b16
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-44100-16bit-mono-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-44100-16bit-stereo-signed.wav b/tests/manual/audiocore/jeplayer-splash-44100-16bit-stereo-signed.wav
new file mode 100644
index 000000000..adfe84fb0
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-44100-16bit-stereo-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-44100-24bit-mono-signed.wav b/tests/manual/audiocore/jeplayer-splash-44100-24bit-mono-signed.wav
new file mode 100644
index 000000000..2c5337045
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-44100-24bit-mono-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-44100-24bit-stereo-signed.wav b/tests/manual/audiocore/jeplayer-splash-44100-24bit-stereo-signed.wav
new file mode 100644
index 000000000..a290c6c37
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-44100-24bit-stereo-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-44100-8bit-mono-unsigned.wav b/tests/manual/audiocore/jeplayer-splash-44100-8bit-mono-unsigned.wav
new file mode 100644
index 000000000..cd1c79280
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-44100-8bit-mono-unsigned.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-44100-8bit-stereo-unsigned.wav b/tests/manual/audiocore/jeplayer-splash-44100-8bit-stereo-unsigned.wav
new file mode 100644
index 000000000..12c48e258
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-44100-8bit-stereo-unsigned.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-44100-stereo.mp3 b/tests/manual/audiocore/jeplayer-splash-44100-stereo.mp3
new file mode 100644
index 000000000..fd820e69a
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-44100-stereo.mp3
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-8000-16bit-mono-signed.wav b/tests/manual/audiocore/jeplayer-splash-8000-16bit-mono-signed.wav
new file mode 100644
index 000000000..a730c2b84
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-8000-16bit-mono-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-8000-16bit-stereo-signed.wav b/tests/manual/audiocore/jeplayer-splash-8000-16bit-stereo-signed.wav
new file mode 100644
index 000000000..5038ae8ae
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-8000-16bit-stereo-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-8000-24bit-mono-signed.wav b/tests/manual/audiocore/jeplayer-splash-8000-24bit-mono-signed.wav
new file mode 100644
index 000000000..ac25cddb3
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-8000-24bit-mono-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-8000-24bit-stereo-signed.wav b/tests/manual/audiocore/jeplayer-splash-8000-24bit-stereo-signed.wav
new file mode 100644
index 000000000..6fec67431
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-8000-24bit-stereo-signed.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-8000-8bit-mono-unsigned.wav b/tests/manual/audiocore/jeplayer-splash-8000-8bit-mono-unsigned.wav
new file mode 100644
index 000000000..d5e49b24b
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-8000-8bit-mono-unsigned.wav
Binary files differ
diff --git a/tests/manual/audiocore/jeplayer-splash-8000-8bit-stereo-unsigned.wav b/tests/manual/audiocore/jeplayer-splash-8000-8bit-stereo-unsigned.wav
new file mode 100644
index 000000000..3df7945aa
--- /dev/null
+++ b/tests/manual/audiocore/jeplayer-splash-8000-8bit-stereo-unsigned.wav
Binary files differ
diff --git a/tests/manual/audiopwmio/single_buffer_loop.py b/tests/manual/audiopwmio/single_buffer_loop.py
new file mode 100644
index 000000000..dfac475b5
--- /dev/null
+++ b/tests/manual/audiopwmio/single_buffer_loop.py
@@ -0,0 +1,65 @@
+import audiocore
+import audiopwmio
+import board
+import digitalio
+import array
+import time
+import math
+
+trigger = digitalio.DigitalInOut(board.D4)
+trigger.switch_to_output(True)
+
+# Generate one period of sine wav.
+length = 8000 // 440
+
+samples = []
+sample_names = [
+"unsigned 8 bit",
+"signed 8 bit",
+"unsigned 16 bit",
+"signed 16 bit"
+]
+
+
+# unsigned 8 bit
+u8 = array.array("B", [0] * length)
+for i in range(length):
+ u8[i] = int(math.sin(math.pi * 2 * i / length) * (2 ** 7) + 2 ** 7)
+
+samples.append(audiocore.RawSample(u8, sample_rate=4000))
+
+# signed 8 bit
+s8 = array.array("b", [0] * length)
+for i in range(length):
+ s8[i] = int(math.sin(math.pi * 2 * i / length) * (2 ** 7))
+
+samples.append(audiocore.RawSample(s8, sample_rate=16000))
+
+# unsigned 16 bit
+u16 = array.array("H", [0] * length)
+for i in range(length):
+ u16[i] = int(math.sin(math.pi * 2 * i / length) * (2 ** 15) + 2 ** 15)
+
+samples.append(audiocore.RawSample(u16, sample_rate=8000))
+
+
+# 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))
+
+samples.append(audiocore.RawSample(s16, sample_rate=8000))
+
+
+dac = audiopwmio.PWMAudioOut(board.D13)
+for sample, name in zip(samples, sample_names):
+ print(name)
+ trigger.value = False
+ dac.play(sample, loop=True)
+ time.sleep(1)
+ dac.stop()
+ time.sleep(0.1)
+ trigger.value = True
+ print()
+
+print("done")
diff --git a/tests/manual/audiopwmio/wavefile_pause_resume.py b/tests/manual/audiopwmio/wavefile_pause_resume.py
new file mode 100644
index 000000000..27912d321
--- /dev/null
+++ b/tests/manual/audiopwmio/wavefile_pause_resume.py
@@ -0,0 +1,39 @@
+import audiocore
+import audiopwmio
+import board
+import digitalio
+import time
+import math
+import os
+
+trigger = digitalio.DigitalInOut(board.D4)
+trigger.switch_to_output(True)
+
+sample_prefix = "jeplayer-splash"
+
+samples = []
+for fn in os.listdir("/"):
+ if fn.startswith(sample_prefix):
+ samples.append(fn)
+
+dac = audiopwmio.PWMAudioOut(left_channel=board.D12, right_channel=board.D13)
+for filename in samples:
+ print("playing", filename)
+ with open(filename, "rb") as sample_file:
+ try:
+ sample = audiocore.WaveFile(sample_file)
+ except OSError as e:
+ print(e)
+ continue
+ trigger.value = False
+ dac.play(sample)
+ while dac.playing:
+ time.sleep(0.1)
+ dac.pause()
+ time.sleep(0.1)
+ dac.resume()
+ trigger.value = True
+ time.sleep(0.1)
+ print()
+
+print("done")
diff --git a/tests/manual/audiopwmio/wavefile_playback.py b/tests/manual/audiopwmio/wavefile_playback.py
new file mode 100644
index 000000000..0adbf2b19
--- /dev/null
+++ b/tests/manual/audiopwmio/wavefile_playback.py
@@ -0,0 +1,36 @@
+import audiocore
+import audiopwmio
+import board
+import digitalio
+import time
+import math
+import os
+
+trigger = digitalio.DigitalInOut(board.D4)
+trigger.switch_to_output(True)
+
+sample_prefix = "jeplayer-splash"
+
+samples = []
+for fn in os.listdir("/"):
+ if fn.startswith(sample_prefix):
+ samples.append(fn)
+
+dac = audiopwmio.PWMAudioOut(left_channel=board.D12, right_channel=board.D13)
+for filename in samples:
+ print("playing", filename)
+ with open(filename, "rb") as sample_file:
+ try:
+ sample = audiocore.WaveFile(sample_file)
+ except OSError as e:
+ print(e)
+ continue
+ trigger.value = False
+ dac.play(sample)
+ while dac.playing:
+ time.sleep(1)
+ trigger.value = True
+ time.sleep(0.1)
+ print()
+
+print("done")