I am playing with the audio on my PYNQ Tul-2 Board (the overlay is from May 2020), trying to build my own audio.
I wrote a simple routine to fill the channels with sine-wave data:
from pynq.overlays.base import BaseOverlay
import numpy as np
import math
adc_sample_freq = 48000 # Number of samples we need to provide per second.
base = BaseOverlay("base.bit")
pAudio = base.audio
pAudio.configure(sample_rate=adc_sample_freq)
pAudio.select_microphone()
num_samples = adc_sample_freq*2*10 # 10-seconds of dual-channel audio
#
# Build an array in numpy of int32s.
samples = np.zeros(num_samples).astype(np.int32)
TwoPi = math.pi*2
amplitude = 500000
#
# Build two sine-waves.
#
def MakeSample(sample,tone_freq):
return int(math.sin((sample*TwoPi)*tone_freq/adc_sample_freq)*amplitude)
for sample in range(0,num_samples,2):
samples[sample] = MakeSample(sample/2,400)
samples[sample+1] = MakeSample(sample/2,300)
pAudio.buffer = samples
pAudio.sample_len = num_samples
pAudio.play()
I hear the sine-waves just fine, but play() never exits. Any idea what I might be doing wrong here?
Thanks,
Roger