Как я могу заставить pyaudio играть из одного динамика? - PullRequest
1 голос
/ 23 марта 2020

Я работаю над классом python, который будет просто воспроизводить звук при вызове. Вот класс

import pyaudio
import numpy as np

class Buzzer(object):

    def __init__(self, seconds = 3.0):

        self.volume = 0.5     # range [0.0, 1.0]
        self.fs = 44100       # sampling rate, Hz, must be integer
        self.duration = seconds   # in seconds, may be float
        self.f = 440.0        # sine frequency, Hz, may be float
        self.samples = (np.sin(2*np.pi*np.arange(self.fs*self.duration)*self.f/self.fs)).astype(np.float32)

        self.stero_signals = np.c_[self.samples, self.samples]
        self.stero_signals[:,0] = 0

    def _play(self):

        p = pyaudio.PyAudio()
        stream = p.open(format=pyaudio.paFloat32,
                channels=2,
                rate=self.fs,
                output=True)

        # play. May repeat with different volume values (if done interactively) 
        stream.write(self.volume*self.samples)

        stream.stop_stream()
        stream.close()

        p.terminate()

    def __call__(self):
        self._play()

Я хотел бы иметь возможность указать в вызове __init__, воспроизводится ли звук слева от правого вкладыша. Как я могу изменить функцию _play, чтобы позволить воспроизводить звук из одного наушника?

Я видел этот вопрос, но ответы не детализированы. ОП говорит, что нашел решение, но его решение включает функции, которые он не включил.

...