質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

0回答

2788閲覧

pyqtgraphのplotitem.plotに関して

muk

総合スコア6

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2015/03/22 17:06

pyqtgraphpyaudioを用いてリアルタイムスペクトルアナライザを実装していたのですが問題が発生し、手詰まりになってしまったので質問させてください。

以下のソースのpyaudioのcallback()内の処理にあるspecItem.plot()内にあるclearをTrueにしてcallbackが来るたびに更新できるようにするとSegmentation fault: 11が現れました。Falseにするとまだ動作してくれますが、時間が経つと動作が重くなるのかノイズが入るので困っています。

ドキュメントや他人のコードを見て回ったのですが、自分が未熟なため中々解決に至るものが見当たりません。
すみませんが、どこが問題を引き起こし、どのようにしたら解決できるかを教えてください。
よろしくお願いします。

開発環境: Yosemite, pyqtgraph 0.9.8, PyAudio0.2.8

lang

1 2# encoding: utf-8 3import sys 4import time 5 6from scipy import fft, fromstring 7import pyaudio 8import pyqtgraph as pg 9from pyqtgraph.Qt import QtGui, QtCore 10 11FORMAT = pyaudio.paFloat32 12CHANNELS = 1 13RATE = 16000 14fftLen = 512 15 16pa = pyaudio.PyAudio() 17app = QtGui.QApplication([]) 18app.quitOnLastWindowClosed() 19# layout 20mainWindow = QtGui.QMainWindow() 21mainWindow.setWindowTitle("Spectrum Analyzer") 22mainWindow.resize(800, 300) 23centralWid = QtGui.QWidget() 24mainWindow.setCentralWidget(centralWid) 25lay = QtGui.QVBoxLayout() 26centralWid.setLayout(lay) 27specWid = pg.PlotWidget(name="spectrum") 28specItem = specWid.getPlotItem() 29specItem.setMouseEnabled(x = False, y = False) 30specItem.setYRange(0, 100) 31specItem.setXRange(0, fftLen/2, padding = 0) 32lay.addWidget(specWid) 33 34mainWindow.show() 35 36# callback 37def callback(in_data, frame_count, time_info, status): 38 data = fromstring(in_data, dtype = "float32") 39 fftspec = fft(data) 40 #problem 41 specItem.plot(abs(fftspec[:len(fftspec)/2]), clear=True) 42 QtGui.QApplication.processEvents() 43 return (in_data, pyaudio.paContinue) 44 45 46stream = pa.open(format = FORMAT, 47 channels = CHANNELS, 48 rate = RATE, 49 input = True, 50 output = True, 51 frames_per_buffer = 512, 52 stream_callback = callback) 53 54 55stream.start_stream() 56app.exec_() 57 58stream.stop_stream() 59stream.close() 60 61pa.terminate()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問