Skip to content

Commit 8c9e22c

Browse files
riklaunimdpgeorge
authored andcommitted
docs/pyboard/tutorial/amp_skin: Add example for playing large WAV files.
1 parent 6cfe737 commit 8c9e22c

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

docs/pyboard/tutorial/amp_skin.rst

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,30 @@ Then you can do::
6969
>>> f = wave.open('test.wav')
7070
>>> dac.write_timed(f.readframes(f.getnframes()), f.getframerate())
7171

72-
This should play the WAV file.
72+
This should play the WAV file. Note that this will read the whole file into RAM
73+
so it has to be small enough to fit in it.
74+
75+
To play larger wave files you will have to use the micro-SD card to store it.
76+
Also the file must be read and sent to the DAC in small chunks that will fit
77+
the RAM limit of the microcontroller. Here is an example function that can
78+
play 8-bit wave files with up to 16kHz sampling::
79+
80+
import wave
81+
from pyb import DAC
82+
from pyb import delay
83+
dac = DAC(1)
84+
85+
def play(filename):
86+
f = wave.open(filename, 'r')
87+
total_frames = f.getnframes()
88+
framerate = f.getframerate()
89+
90+
for position in range(0, total_frames, framerate):
91+
f.setpos(position)
92+
dac.write_timed(f.readframes(framerate), framerate)
93+
delay(1000)
94+
95+
This function reads one second worth of data and sends it to DAC. It then waits
96+
one second and moves the file cursor to the new position to read the next second
97+
of data in the next iteration of the for-loop. It plays one second of audio at
98+
a time every one second.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy