def initAUD(self): # info = QAudioDeviceInfo.defaultInputDevice() if (~info.isFormatSupported(self.audio.format)): # print("警告,设置的默认音频格式并不支持,将尝试采用最相近的支持格式") # 不知道这里面有什么神改动? self.audio.format = info.nearestFormat(self.audio.format) # update_interval = 160 self.audioRecorder = QAudioInput(self.audio.format) self.audioRecorder.setNotifyInterval(update_interval) #按毫秒ms 类似于QTimer的作用 self.audioRecorder.notify.connect(self.processAudioData) self.audioRecorder_TD = QThread() self.audioRecorder.moveToThread(self.audioRecorder_TD) self.audioRecorder_TD.started.connect(self.startRecord) self.audioRecorder.stateChanged.connect(self.recordStopped) # 总结来说线程只是一个容器,里面执行的循环要是没法结束,强制退出也不好操作 # 所以还是好好写好任务流然后发送信号比较合理 self.audioPlayer = QAudioOutput(self.audio.format) self.audioPlayer.setNotifyInterval(update_interval) self.audioPlayer.notify.connect(self.processAudioData) self.audioPlayer_TD = QThread() self.audioPlayer.moveToThread(self.audioPlayer_TD) self.audioPlayer_TD.started.connect(self.startPlay) self.audioPlayer.stateChanged.connect(self.playStopped)
def __init__(self): super(JackStreamListen, self).__init__() self.ip = '127.0.0.1' self.port = '23' self.state = 'disconnected' self.channel_select = -1 self.channel_count = -1 # self.tsfmt = '%y%m%d-%H%M%S:' # self.textFgColor = 'rgb(0,0,0)' # self.textBgColor = 'rgb(255,255,255)' # self.fontstr = 'Helvetica' logging.debug('DBG: state = ' + self.state) # self.insFile = "";self.insDir="" # self.insSleepAmount = 0; self.qsock = QtNetwork.QTcpSocket(self) self.qsock.readyRead.connect(self.onReadyRead) # create None/empty variables to be created/updated later self.prevpkt = bytearray() # note a QByteArray b/c reusing msgify_pkt self.audiodata = bytearray() self.clips = [] self.rms = [] self.audiofmt = QAudioFormat() self.audioout = QAudioOutput() self.iodevice = self.createIoDevice() #FIXME self.tcpSocket.error.connect(self.displayError) # self.font = QtGui.QFont() self.loadSettings() self.initUI()
def createAudioOutput(self): self.m_audioOutput = QAudioOutput(self.m_device, self.m_format) self.m_audioOutput.notify.connect(self.notified) self.m_audioOutput.stateChanged.connect(self.handleStateChanged) self.m_generator.start() self.m_audioOutput.start(self.m_generator) self.m_volumeSlider.setValue(self.m_audioOutput.volume() * 100)
def initAudio(self): self.audioformat = QAudioFormat() self.audioformat.setSampleRate(self.samplerate) self.audioformat.setChannelCount(2) self.audioformat.setSampleSize(32) self.audioformat.setCodec('audio/pcm') self.audioformat.setByteOrder(QAudioFormat.LittleEndian) self.audioformat.setSampleType(QAudioFormat.Float) self.audiooutput = QAudioOutput(self.audioformat) self.audiooutput.setVolume(1.0)
def initAudio(self): self.audioformat = QAudioFormat() self.audioformat.setSampleRate(self.samplerate) self.audioformat.setChannelCount(2) self.audioformat.setSampleSize(32) self.audioformat.setCodec('audio/pcm') self.audioformat.setByteOrder(QAudioFormat.LittleEndian) self.audioformat.setSampleType(QAudioFormat.Float) # self.audiodeviceinfo = QAudioDeviceInfo(QAudioDeviceInfo.defaultOutputDevice()) self.audiooutput = QAudioOutput(self.audioformat) self.audiooutput.setVolume(self.initVolume)
def __init__(self, parent=None): print("Tone Widget inst") QWidget.__init__(self, parent) self.activeGen = ActiveGen(sampleRate=SAMPLE_RATE, samplePerRead=Meep.SAMPLES_PER_READ) self.createUI(self) # Meep playback format initialization format = QAudioFormat() format.setChannelCount(AUDIO_CHANS) format.setSampleRate(SAMPLE_RATE) format.setSampleSize(SAMPLE_SIZE) format.setCodec("audio/pcm") format.setByteOrder(QAudioFormat.LittleEndian) format.setSampleType(QAudioFormat.SignedInt) # check compatibility of format with device info = QAudioDeviceInfo(QAudioDeviceInfo.defaultOutputDevice()) if info.isFormatSupported(format) is False: print( "Raw audio format not supported by backend, cannot play audio." ) return None # Audio Output init self.output = QAudioOutput(format, self) output_buffer_size = \ int(2*SAMPLE_RATE \ *CTRL_INTERVAL/1000) self.output.setBufferSize(output_buffer_size) # initialize and start the audio playback self.generator = Meep(format, self.activeGen, self) self.generator.start() self.output.start(self.generator) # Create the port reader object self.midiListener = MidiPortReader() # Create a thread which will read it self.listenerThread = QThread() # move QObjet to a new thread self.midiListener.moveToThread(self.listenerThread) # Connect the signals to slot functions self.midiListener.newNoteFrequency.connect(self.activeGen.setFreq) self.midiListener.newNotePress.connect(self.activeGen.setNote) # Tell Qt the function to call # when it starts the thread self.listenerThread.started.connect(self.midiListener.listener) # start the thread self.listenerThread.start()
def get_audio_output(params): """ Create and return a QAudioOutput from wav params. """ enc = 'audio/pcm' fmt = QAudioFormat() fmt.setChannelCount(params.nchannels) fmt.setSampleRate(params.framerate) fmt.setSampleSize(params.sampwidth * 8) fmt.setCodec(enc) fmt.setByteOrder(QAudioFormat.LittleEndian) fmt.setSampleType(QAudioFormat.SignedInt) return QAudioOutput(fmt)
def ot_dev_change(self, new_index): if self.otput_device: if self.input_device: self.input_device.stop() self.otput_device.stop() self.otput_device = None audio_info = self.otput_info_list[new_index] preferred_format = audio_info.preferredFormat() self.otput_device = QAudioOutput(audio_info, preferred_format) self.otput_device.setVolume(self.volume.value() / 100) #self.otput_device.setBufferSize( 384 ) if self.input_device: self.input_device.start(self.otput_device.start())
def __init__(self, parent=None): QWidget.__init__(self, parent) format = QAudioFormat() format.setChannelCount(1) format.setSampleRate(22050) format.setSampleSize(16) format.setCodec("audio/pcm") format.setByteOrder(QAudioFormat.LittleEndian) format.setSampleType(QAudioFormat.SignedInt) self.output = QAudioOutput(format, self) self.frequency = 440 self.volume = 0 self.buffer = QBuffer() self.data = QByteArray() self.deviceLineEdit = QLineEdit() self.deviceLineEdit.setReadOnly(True) self.deviceLineEdit.setText( QAudioDeviceInfo.defaultOutputDevice().deviceName()) self.pitchSlider = QSlider(Qt.Horizontal) self.pitchSlider.setMaximum(100) self.volumeSlider = QSlider(Qt.Horizontal) self.volumeSlider.setMaximum(32767) self.volumeSlider.setPageStep(1024) self.playButton = QPushButton(self.tr("&Play")) self.pitchSlider.valueChanged.connect(self.changeFrequency) self.volumeSlider.valueChanged.connect(self.changeVolume) self.playButton.clicked.connect(self.play) formLayout = QFormLayout() formLayout.addRow(self.tr("Device:"), self.deviceLineEdit) formLayout.addRow(self.tr("P&itch:"), self.pitchSlider) formLayout.addRow(self.tr("&Volume:"), self.volumeSlider) buttonLayout = QVBoxLayout() buttonLayout.addWidget(self.playButton) buttonLayout.addStretch() horizontalLayout = QHBoxLayout(self) horizontalLayout.addLayout(formLayout) horizontalLayout.addLayout(buttonLayout) self.play() self.createData()
def create_AUDIO(self, format): format.setChannelCount(AUDIO_CHANS) format.setSampleRate(SAMPLE_RATE) format.setSampleSize(SAMPLE_SIZE) format.setCodec("audio/pcm") format.setByteOrder( QAudioFormat.LittleEndian ) format.setSampleType( QAudioFormat.SignedInt ) self.output = QAudioOutput(format, self) output_buffer_size = \ int(2*SAMPLE_RATE \ *CTRL_INTERVAL/1000) self.output.setBufferSize( output_buffer_size )
def __init__(self,parent=None): #UI QWidget.__init__(self,parent) self.create_UI(parent) #audio formatting format=QAudioFormat() format.setChannelCount(AUDIO_CHANS) format.setSampleRate(SAMPLE_RATE) format.setSampleSize(SAMPLE_SIZE) format.setCodec("audio/pcm") format.setByteOrder( QAudioFormat.LittleEndian ) format.setSampleType( QAudioFormat.SignedInt ) self.output=QAudioOutput(format,self) output_buffer_size=\ int(2*SAMPLE_RATE \ *CTRL_INTERVAL/1000) self.output.setBufferSize( output_buffer_size ) self.generator=Generator(format,self) #THREADS self.midiListener=MidiPortReader() self.listenerThread=QThread() self.midiListener.moveToThread( self.listenerThread ) self.listenerThread.started.connect( self.midiListener.listener ) self.listenerThread.start() self.midiListener.noteOff.connect(self.generator.noteOff) self.midiListener.noteVelocity.connect(self.generator.noteVelocity) self.midiListener.noteOn.connect(self.generator.noteOn) self.volumeSlider.valueChanged.connect(self.generator.volSlide) self.qfacSlider.valueChanged.connect(self.generator.qFactor) self.generator.start() self.output.start(self.generator)
def set_data(self, mono_sig, sr): # if not self.format: self.format = QAudioFormat() self.format.setChannelCount(1) self.format.setSampleRate(sr) #numpy is in bites, qt in bits self.format.setSampleSize(mono_sig.dtype.itemsize * 8) self.format.setCodec("audio/pcm") self.format.setByteOrder(QAudioFormat.LittleEndian) self.format.setSampleType(QAudioFormat.Float) self.output = QAudioOutput(self.format, self) self.output.stateChanged.connect(self.audio_state_changed) #change the content without stopping playback p = self.buffer.pos() if self.buffer.isOpen(): self.buffer.close() self.data = mono_sig.tobytes() self.buffer.setData(self.data) self.buffer.open(QIODevice.ReadWrite) self.buffer.seek(p)
def ot_dev_change(self, new_index): print('index', new_index) # Disconnect and stop the devices if they are connected. self.disconnect_devices() self.otput_device = None # device object goes out of scope # Get the QAudioDeviceInfo corresponding to this index of the combox. audio_info = self.otput_info_list[new_index] # Create a new QAudioOutput based on that. preferred_format = audio_info.preferredFormat() self.otput_device = QAudioOutput(audio_info, preferred_format) self.otput_device.setVolume(0) # reconnect will set correct volume # hook up possible debug status display self.otput_device.stateChanged.connect(self.ot_dev_state_change) # reconnect the devices if possible. Which also sets the volume. self.reconnect_devices()
def __init__(self, parent=None): QWidget.__init__(self, parent) format = QAudioFormat() format.setChannelCount(AUDIO_CHANS) format.setSampleRate(SAMPLE_RATE) format.setSampleSize(SAMPLE_SIZE) format.setCodec("audio/pcm") format.setByteOrder(QAudioFormat.LittleEndian) format.setSampleType(QAudioFormat.SignedInt) self.output = QAudioOutput(format, self) output_buffer_size = \ int(2*SAMPLE_RATE \ *CTRL_INTERVAL/1000) self.output.setBufferSize(output_buffer_size) self.generator = Meep(format, self) self.generator.start() self.output.start(self.generator)
def __init__(self, parent=None): QWidget.__init__(self, parent) format = QAudioFormat() format.setChannelCount(AUDIO_CHANS) format.setSampleRate(SAMPLE_RATE) format.setSampleSize(SAMPLE_SIZE) format.setCodec("audio/pcm") format.setByteOrder(QAudioFormat.LittleEndian) format.setSampleType(QAudioFormat.SignedInt) self.output = QAudioOutput(format, self) output_buffer_size = \ int(2*SAMPLE_RATE \ *CTRL_INTERVAL/1000) self.output.setBufferSize(output_buffer_size) self.generator = Meep(format, self) self.generator.start() self.output.start(self.generator) # Create the port reader object self.midiListener = MidiPortReader() # Create a thread which will read it self.listenerThread = QThread() # Take the object and move it # to the new thread (it isn't running yet) self.midiListener.moveToThread(self.listenerThread) self.midiListener.newNoteFrequency.connect(self.generator.changeFreq) # Tell Qt the function to call # when it starts the thread self.listenerThread.started.connect(self.midiListener.listener) # Fingers in ears, eyes tight shut... self.listenerThread.start()
def __init__(self, parent=None): QWidget.__init__(self, parent) format = QAudioFormat() format.setChannelCount(AUDIO_CHANS) format.setSampleRate(SAMPLE_RATE) format.setSampleSize(SAMPLE_SIZE) format.setCodec("audio/pcm") format.setByteOrder(QAudioFormat.LittleEndian) format.setSampleType(QAudioFormat.SignedInt) self.output = QAudioOutput(format, self) output_buffer_size = \ int(2*CTRL_INTERVAL/1000) self.output.setBufferSize(output_buffer_size) self.generator = Generator(format, self) self.midiListener = MidiPortReader() self.listenerThread = QThread() self.midiListener.moveToThread(self.listenerThread) self.listenerThread.started.connect(self.midiListener.listener) self.midiListener.addVoice.connect(self.generator.addVoice) self.midiListener.removeVoice.connect(self.generator.removeVoice) self.createUI() self.pslider.valueChanged.connect(self.generator.changeP) self.fslider.valueChanged.connect(self.generator.qCalc) self.semiDown.clicked.connect(self.smDown) self.semiUp.clicked.connect(self.smUp) self.octaveDown.clicked.connect(self.ovDown) self.octaveUp.clicked.connect(self.ovUp) self.listenerThread.start() self.generator.start() self.output.start(self.generator)