Programming
別スレッドで走っている計算処理の終了後、計算終了を通知するメッセージボックスを表示する 別スレッドでオーディオファイルを再生し、再生終了時にQWidgetを操作する というような、サブスレッド終了後にウィジェットを非同期的に操作する処理を書いてみま…
PyQt で複数のQPushButton Widget を使う場合、愚直に書くと以下のようになります。 class MainWindow(QWidget): def __init__(self, n_buttons): super().__init__() layout = QVBoxLayout() self.setLayout(layout) button = QPushButton(f"Button 0") but…
PyQt ではapp.setStyle(style_str)によってWidgetのデザインを変更することができます。 デフォルトスタイルはstyle_str="Fusion"ですが、環境によって"Windows"や"QtCurve"などを使うことができます。 この記事では、Win10で利用可能なPyQtのスタイルを確認…
matplotlibを使って、どのくらいのフレームレートでリアルタイムプロットできそうか検証 pic.twitter.com/X2mjgYiaWy— Kurene (@_kurene) 2021年1月29日 Pythonで安定的にリアルタイムプロットを実現するライブラリとしては PyQtGraph がありますが、手軽にm…
自作の双2次フィルタ (Biquad Filter)のPythonライブラリ PyQuadFilter に極と零点をプロットする関数を実装しました。 exmamples/04_plot_pole_zero.pyがサンプルコードとなっています。 プロット例 オールパスフィルタの極/零点プロットです。 q = 1.5 fc…
scipy.signal.resample_polyを使ってオーバーサンプリングを実装してみました。 resample_polyのデフォルトの設定では、パラメタβ=5.0のカイザー窓によるFIRローパスフィルタが使われています。 注意すべき箇所として、フィルタ長はresample_polyの引数では…
MP3などで使われている周波数変換方法であるMDCT (Modified Discrete Cosine Transform)。 現状、Scipy等の準標準的なライブラリに関数はありませんが、以下のライブラリがありました。 GitHub - nils-werner/mdct: A fast MDCT implementation using SciPy …
双2次フィルタの自作Pythonライブラリである PyQuadFilterを更新しました。 PyAudioやPySoundDeviceと組み合わせることで、Pythonでも双2次フィルタを使った簡単なリアルタイム音響信号処理ができます。 GitHub - Kurene/pyquadfilter: Implementation of di…
前回の記事で紹介したPythonの心理音響評価モジュールMoSQIToでラウドネスを算出してみました。 基本的に以下のドキュメント・ソースコードを参考にしています。 MoSQITo/tuto3_Loudness-zwicker-time-varying.ipynb at master · Eomys/MoSQITo · GitHub ソ…
https://github.com/Eomys/MoSQITo 心理音響学について調べていたら、興味深いPythonライブラリがあったので紹介します。 github.com 心理音響学に基づく音質評価ソフトウェアの多くは市販製品であり、オープンソースでさくっと使えるものはほとんどないのが…
先日、下記の記事で統合ラウドネス値(Integrated loudness) LKFS/LUFS のPython実装 pyloudnorm をご紹介しました。 pyloudnormでLUFS算出/ラウドネス正規化 - Wizard Notes こちらのライブラリのコードは、Rec. ITU-R BS.1770-4 に沿って実装されている…
K-weighting filter の実装の記事 を書いている時に、Python向けの双2次フィルタのライブラリがあったらいいなーと思ったので、年末年始の自由研究開発として作ってみました。 プロトタイプ版ですが、とりあえず公開します。 githubにあまり慣れていなかった…
Pythonで平均ラウドネス値 (LUFS) を算出したりラウドネス正規化をすることができるモジュール pyloudnorm を試してみました。 https://github.com/csteinmetz1/pyloudnorm オフラインでの分析/加工を想定したような設計となっており、ラウドネスメータープ…
はじめに 音信号の分析では、時間波形を直接分析するのではなく、様々な周波数分析手法を利用します。 比較的細かい周波数成分を見る方法としては、 STFT (短時間フーリエ変換) CQT (定Q変換) メルフィルタバンク がよく使われています。これらのライブラリ…
dB単位の音量フェーダー pic.twitter.com/mJK2E6RmnJ— Kurene (@_kurene) 2020年12月22日 PyQtで作るdB単位の音量フェーダーを作ってみました。 信号に乗算するゲイン係数は、音量フェーダーのdB値 x から、 として算出しています。 ソースコード GUI クリッ…
PyQt 5 / PySide 2 には、オーディオファイルの再生/停止ができるモジュール QSound があります。 使い方は非常に簡単で、play(),stop()といった関数でオーディオの再生/停止を操作できます。 from PyQt5.QtMultimedia import QSound audiofilepath = ...…
RxPY でのrx.scheduler.ThreadPoolSchedulerを使った並行処理の書き方です。 注意として、rx.scheduler.ThreadPoolSchedulerは from concurrent.futures import ThreadPoolExecutor を利用しています。 Pythonでは GIL (Global Interpreter Lock, GIL) によ…
Python 用の Reactive Extensions ライブラリである RxPY を勉強し始めました。 RxPY を使えば、非同期的に流れてくるデータのシーケンス/ストリームに対する処理を簡単に記述できます。 https://www.atmarkit.co.jp/fdotnet/introrx/introrx_01/introrx_01…
PyQtを使っていると、背景色やテキスト文字をサクッと設定したいことが多々あります。 各QWidgetオブジェクトごとに設定してもいいのですが、面倒なので、まとめて設定する方法を紹介します。 方法1:QPallete QPaletteクラスを使うことで、コンポーネントご…
pypi.org Pythonのワイルドカードインポートimport * は便利ですが、どの変数・関数を利用しているか分かりにくいです。 そんな場合、このremovestarを使うと、ワイルドカードインポートを明示的インポートに置き換えてくれます。 import文周りがスッキリす…