Python
DTMなどで音の広がり感を可視化するには,リサージュ図形に基づく方法があります. リサージュ リサジュー:Lissajousとは | 偏ったDTM用語辞典 - DTM / MIDI 用語の意味・解説 | g200kg Music & Software 2つの信号を元に作られるリサージュ図形を利用し,2…
Pythonを使って TeX の数式を画像として保存する方法がないか調べたところ、SymPy という Welcome to SymPy’s documentation! — SymPy 1.0.1.dev documentation SymPyは数式による処理を行うライブラリであり,独自の記法もありますが TeX 記法を扱うことも…
PyQtGraph の3Dサーフェス/メッシュプロットでは,高さに応じて色を変えることができます。 具体的には,GLSurfacePlotItem もしくは GLMeshItem のコンストラクタのキーワード引数 としてshader='heightColor'を指定します. n_x, n_y = 128, 128 xy_init …
PyQtGraphで美しいリアルタイムプロットができることを最近知ったので、実装例として2次元波動方程式の数値シミュレーション(有限差分法)をリアルタイム実行・プロットしてみました。 実装のための数式導出と、PyQtGraphを使ったソースコードを合わせて紹…
matplotlibよりも滑らかなリアルタイムプロットができる PyQtGraph で散布図をリアルタイムプロットしてみました。 PyQtGraphで散布図リアルタイムプロット、1000点でも60fps程度で動いてくれたので良き pic.twitter.com/R6ntYYMIQF— Kurene (@_kurene) 2021…
PyQtGraph の公式実装例*1やWeb上にあるソースコードを見ると、例えば PyQtGraph でのリアルタイムプロットのコードは以下のように実装されています。 # -*- coding: utf-8 -*- from pyqtgraph.Qt import QtGui, QtCore import numpy as np import pyqtgraph…
PyQtGraph の導入理由 matplotlib ではダメなのか? PyQtGraph のメリット・デメリット PyQtGraph の導入方法 PyQtGraphのエラー対処 リアルタイムプロット/アニメーションの実装例 1次元プロット(折れ線グラフ) 複数の折れ線・カーブプロット 2D散布図プ…
Pythonで本格的なリアルタイムプロット向けのライブラリである PyQtGraph 。 このPyQtGraph を導入・サンプル実行する際にエラーが発生したので、その内容と対処方法をメモしたいと思います。 環境 Win10 64-bit Python 3.6.5 conda 4.6.14 導入の流れとエラ…
前回の記事では、matplotlibでの折れ線グラフのプロット画像のラベルや属性を変更しました。 www.wizard-notes.com 今回は、折れ線グラフのリアルタイムプロットでラベルやカラーなどの属性を変えるコードを実装をしました。 import numpy as np import matp…
折れ線グラフで複数の配列・ラベル・カラーなどの属性をまとめてセットする場合、単純な方法としては以下のように一つの信号 (y_arr) ずつplt.plot()するコードが考えられます。 length = 100 x = np.arange(0, length) y = np.array([ np.random.normal(0, …
音響信号ソフトウェアでは、録音している音信号の大きさやピッチ(基本周波数)といった情報をリアルタイムで表示したいことが多々あります。 ところで、Pythonではグラフを表示するようなGUIのライブラリの選択肢はあまり多くありません。 そこで、今回はグ…
ある音に対して、人間が感じるうるささと音圧レベルの大きさは必ずしも一致していません。 以下の等ラウドネス曲線のように、音圧レベルと周波数によって人間の聴覚の感度は異なっています。 https://ja.wikipedia.org/wiki/音の大きさ そのため、音信号の分…
前置き Python wave モジュール 実装/テスト 最後に Float形式のWAVファイルについて 前置き 音楽プレイヤーのような音楽ソフトウェアの開発では、まずオーディオファイルから時間信号を読み込む処理が第一歩となります。 オーディオファイルは数多くの種類…
今日の進捗:・複数コーデック対応・信号分析部(ラウドネスレベル算出以外)・wx.lib.plotで信号プロット・分析結果テーブル追加・ステータスバー追加あとトータル/短時間ラウドネスレベル (LUFS) の算出部を実装すれば最低限完成 pic.twitter.com/5PziG56…
はじめに 実装 Python HTML / Javascript PyInstaller による実行ファイル作成 ファイルサイズについて python -m eel --onefile --noconsole はじめに smoothiecharts.jsよき…なおpyinstallerは仮想環境切らないと実行ファイル化できなかった pic.twitter.c…
(トラック数,最短音符数,音高数) のnumpy配列になってしまえば煮るなり焼くなりこっちのもの pic.twitter.com/7WfjuAQujI— Kurene (@_kurene) 2021年3月28日 MIDI形式のデータは演奏の操作・記録方式として優れていますが、データ分析やプログラム上での編…
Detecting harmonic change in musical audio https://t.co/wwxJf1s5oq2006年の論文だけど不勉強なもので最近ようやく知りました…。クロマベクトルのピッチクラス12音の各強度を音程調和知覚に基づく2次元空間×3に飛ばして、それぞれの空間でのcentroidを特…
PyQt でスクロールバーを追加する方法としては、QScrollAreaがあります。 QScrollAreaの利用シーンとしては、以下の2パターンに分けることができます。 QWidget/QMainWindow 上の特定の領域でスクロールしたい QWidgetを継承・カスタマイズしたオブジェクト…
Pythonで音楽ファイルのタグ情報を抽出するライブラリの一つとして、mutagenがあります。 www.wizard-notes.com www.wizard-notes.com mutagenは個々の拡張ファイルに特化したタグ抽出が可能ですが、様々な拡張子をまとめて扱う際には条件分岐が多くなってし…
オーディオ信号のスペクトログラムをプロット/保存する方法としては、matplotlibのimshow()を使う方法がありますが、今回はスペクトログラムを純粋な画像データとして保存する方法を試してみました。 実装 import librosa import numpy as np import cv2 bi…
別スレッドで走っている計算処理の終了後、計算終了を通知するメッセージボックスを表示する 別スレッドでオーディオファイルを再生し、再生終了時に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のスタイルを確認…
計算機を使った音楽分析技術の一つとして、楽曲構成(Aメロ、Bメロ、サビ)を分析する方法があります。 しかし、日本語で技術の具体的な実現方法や実装について説明のある文献はあまり多くありません。また、Pythonの音楽分析ライブラリ LibROSA にはまだ実…
Pythonのmatplotlibでリアルタイムスペクトログラム描画。音と同期再生を考えると、真面目に描画するのは全然間に合わないのでPyQtGraph使うべきで、多少サボっていい加減な描画でいいなら使えなくもないかも…という印象 pic.twitter.com/LNJCavKWRf— Kurene…
Python でオーディオファイルを読み込むライブラリは複数あります。 wave scipy.io.wavfile scipy.io.wavfile.read scipy.io.wavfile.write audiofile soundfile audioread librosa.load ぱっと見、どれを使えばよいか迷ってしまいますが、 様々なOSで動いて…
Pythonの音楽分析モジュールLibROSAには、v.0.7から線形予測分析(https://ja.wikipedia.org/wiki/%E7%B7%9A%E5%BD%A2%E4%BA%88%E6%B8%AC%E6%B3%95)を行う関数librosa.lpcが追加されました。 線形予測分析は音声の音素や声色を分析するのによく利用されていま…
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…