chevron_left

メインカテゴリーを選択しなおす

cancel
Wizard Notes https://www.wizard-notes.com/

音専門のエンジニアが書く、音響音楽解析の技術録、音楽のレビューおよび分析、作曲活動に関する雑記です。

Kurene
フォロー
住所
未設定
出身
未設定
ブログ村参加

2014/02/23

  • Webアプリ試作:Lofi hiphop風の揺らぎのあるリズムを奏でるドラムマシン

    lofi hiphop 風のビートをさくっと作れるリズムマシンの試作。前半がヨレたビートの生成,後半がランダムパターンのデモ #reactjs #webaudioapi #webapp #lofi #lofibeats #lofihiphophttps://t.co/L7qrtNEEmM pic.twitter.com/h0JvMf654O— Kurene (@_kurene) February 25, 2023 去年から積んでいた Lofi風ドラムマシンの開発をようやく消化できたので紹介を細かい話を書きたいと思います。 モチベーション 機能について 基本機能 Fluctuation mode…

  • シュレーダーリバーブ(人工残響エフェクタ)のPython実装と試聴デモ

    今回は,以下の記事で紹介したオールパスフィルタによる残響生成を用いて、実用的な残響エフェクタとして有名なシュレーダーリバーブをPythonで実装してみました。 www.wizard-notes.com シュレーダーリバーブの概要 フィードバック型コムフィルタの回路について フィルタ応答の観察 直列オールパスフィルタのみ 並列コムフィルタ+直接音 並列コムフィルタ+直列オールパスフィルタ+直接音 シュレーダーリバーブのデモ(ピアノ) Python実装 参考文献 シュレーダーリバーブの概要 シュレーダーリバーブは直列オールパスフィルタによる残響生成に加えて、並列フィードバック型コムフィルタを用いて…

  • Windows10/11でMelodyne 4 が起動しない事象への対処

    音質と操作性に非常に優れていることから、ピッチ編集ソフトMELODYNE (Celemony Software)を長年愛用しています。 最近、新PCでの作曲環境再構築の際に、Melodyne 4 64-bit 版が起動しないということがありました。 結論としては、Intel CPU の第10・11世代は64-bit版を利用できない可能性が高いようです。 miwele.com https://helpcenter.celemony.com/M5/faqs/?qOpen=299 ということで、私の環境でも Melodyne 4 64-bit 版はダメでしたが、32-bit 版は起動しました。 C:…

  • Python:直列オールパスフィルタによる人工残響の生成と試聴

    「信号処理に欠かせないオールパスフィルタ―」で紹介したオールパスフィルタの利用例として、人工残響フィルタを実装してみました。 設計方法 フィルタ応答の比較 試聴 Python実装 参考文献 設計方法 直列オールパスフィルタによる人工残響生成はシュレーダリバーブ の一部として知られています。 具体的には、多段のオールパスフィルタで構成します. 実装は簡単ですが,オールパスフィルタの性質により振幅は指数関数的に減衰し、出力信号の音色に変な色付けがされない*1となっていることから、残響にとって都合よい特性となっています。 なお、よりよい残響生成のために、各オールパスフィルタの遅延は互いに素で、遅延の…

  • Python:ヒルベルト変換で様々な信号の包絡線,瞬時位相,瞬時周波数を抽出

    音の時間波形の包絡線を抽出や振幅変調(AM)の復調などで利用されるヒルベルト変換をPythonで実装し、いくつかの簡単な信号に対して適用してみました。 ヒルベルト変換の概要 ヒルベルト変換の仕組みや実装方法については、以下のWebページがわかりやすいです。 小野測器 基礎からの周波数分析(29)-「ヒルベルト変換と解析信号」 この記事に従い, フーリエ変換を用いて解析信号を算出 解析信号から包絡線,瞬時位相,瞬時周波数を抽出 する処理を実装します. Python実装 入力信号→解析信号の算出 def hilbert_transform(x): n = x.shape[0] x_f = np.f…

  • リアルタイム雑音抑圧処理:適応線スペクトル強調器 (ALE) のPython実装と適用例

    音信号向けの簡単かつ実用的なリアルタイム向け雑音抑圧処理として,以下の書籍で適応線スペクトル強調器 (ALE) が紹介されていました. 上記の書籍を参考にしつつ,Pythonでの適応線スペクトル強調器 (ALE)の実装と,様々な信号への適用例を紹介します。 適応線スペクトル強調器 (ALE) の概要 適応線スペクトル強調器 (ALE) は雑音が含まれた観測信号から目的信号を強調/予測する処理です. 目的信号は音声や楽音のような周期性信号であり,周波数が未知でも抽出できることがこの手法の長所です. 以下がブロック図です。 遅延素子数Dは相関分離パラメタ (de-correlation param…

  • xlsxやcsvのデータをExcelで間引く方法(INDIRECT, SUBSTITUTE, ADDRESS, ROW, COLUMN関数)

    サンプル数が大きい時系列データや周波数応答が格納されたxlsxやcsvファイルをExcelで開くと、かなり動作が重くなることがあります。 そのようファイルでグラフをプロットのような操作をするのは動作が遅いため苦行ですし、Excelが突然落ちるリスクも高くなります。 基本はプログラムやバッチファイルで間引き(デシメーション)するのがよいですが、どうしてもExcelでなんとかしたい場面があります。 そこで、ファイルサイズの大きい xlsxやcsvのデータをExcelで間引く方法を示します。 元データの形式例 例として、時系列データを考えます。 今回は、rawシートにA列に時系列のインデックス,B-…

  • オーディオテクニカの耳掛けヘッドホンの耳掛け部の特許

    オーディオテクニカは ATH-EW9 のような耳掛けヘッドホンを販売しています。 www.wizard-notes.com これらの機種の共通の特長として、耳にフィットしやすいイヤハンガーがあります。 この独特なイヤハンガーは、耳への締め付けを向上させるだけでなく、ヘッドホン部の高さを変えることができます。 そのため、結果として密着感を向上させることができているように思います。 左:イヤハンガーを閉じた状態,右:イヤハンガーを開いた状態 左:イヤハンガーの高さ最小,右:イヤハンガーの高さ最大 実は、このイヤハンガー部はオーディオテクニカが特許をとっており、ちょうど今年の9月末に20年経って期限…

  • 和音のモダリティ(明るいー暗い/嬉しいー悲しい)を算出するモダリティ曲線 (Modality Curve) のPython実装

    不協和度、緊張度に引き続き、“The Psychophysics of Harmony Perception: Harmony is a Three-Tone Phenomenon” より和音の明るさー暗さや嬉しさー悲しさを表すとされる和音のモダリティの算出モデルについて紹介します。 また、モダリティ曲線を算出するPythonのプログラムを紹介します。 www.wizard-notes.com www.wizard-notes.com モダリティの概要 純音のモダリティ曲線 倍音を考慮したモダリティ算出 プロット用コード まとめ 参考文献 モダリティの概要 モダリティは和音の緊張度と密接に結び…

  • 和音の緊張度を算出する緊張度曲線 (Tension Curve) のPython実装

    前回に引き続き、“The Psychophysics of Harmony Perception: Harmony is a Three-Tone Phenomenon” より和音の心理数理モデルのPython実装を行います。 今回は、和音の緊張度を分析する数理モデルを扱います。 用途としては、減3和音や増3和音のような緊張感のある和音・ヴォイシングを分析・検出したり、コード進行を分析するのに利用できる可能性があります。 www.wizard-notes.com 和音の緊張度 参考文献では、和音の緊張度を音程の等しさに基づいて算出しています。 緊張度の高い和音としては、減3和音や増3和音などが…

  • 和音の協和度を算出する不協和度曲線 (Dissonance Curve) のPython実装

    和音の響きはその音楽の雰囲気を分析する重要な要素です。 長/短3和音のような明るい/悲しいといった響きから、ジャジーな和音の複雑で豊かな響きまで様々です。 このような和音の響きを計算機で分析する方法はいくつかあります。 今回は、和音がどのくらい協和的かを示すモデルとして知られている不協和度曲線を紹介します。 2つの純音の不協和度 倍音を考慮した不協和度曲線 3つ以上の音の不協和度の算出 まとめ 参考文献 2つの純音の不協和度 参考文献では、基本周波数がそれぞれ f1, f2 (f1<f2)である2つの純音の不協和度曲線は以下のように定義されています*1。 v12は2つの純音の音量 v1, v2…

  • FL Studio で Miroslav Philharmonik 2 のクラッシュを防ぐ方法

    IK Multimedia の高品質なオーケストラ音源 Miroslav Philharmonik 2 (CE) は、セール時だとCEで5~6千円、完全版でも1万円台で買えるコスパの良いオーケストラ音源です。 しかし、FL StudioではプラグインがDAWを巻き込んで頻繁にクラッシュするという問題がありました。 今回、その対処方法を実施してからクラッシュしなくなったため、情報を残したいと思います。 症状 Miroslav Philharmonik 2 を使っていると、突然音割れが発生し、その後すぐに情報表示部に「"Philharmonik 2" crashed while processin…

  • 1次IIRオールパスフィルタでローパス/ハイパスフィルタを作る(Python実装)

    「信号処理に欠かせないオールパスフィルタ―の概要・使い方・利用例」では、オールパスフィルタによって低演算量で様々な周波数特性のフィルタを作成できることを紹介しました。 www.wizard-notes.com この記事では、その具体例として1次IIRオールパスフィルタの並列回路でローパス/ハイパスフィルタを作成します。 1次IIRオールパスフィルタ 1次IIRオールパスフィルタの詳細はこちらの記事を参考にしてください。 今回は位相が90度遅れる周波数 fc を4つ用意し、それぞれのフィルタ係数用パラメタ λを算出しました。 sr = 44100 worN = 4096 # 0.3, 2.8, …

  • 様々な周波数特性を実現するオールパスフィルタ―の概要・使い方・利用例

    信号処理におけるフィルタとしては、ローパス/ハイパスフィルタのような振幅特性を活用するフィルタが良く知られています。 しかし、一方で位相特性のみに影響を与えるオールパスフィルタという種類のフィルタがあります。 実は、オールパスフィルタは並列回路で利用することで様々な周波数特性を低演算量で実現できる非常に便利なフィルタです。 そこで本記事では、オールパスフィルタ―の概要・使い方・利用例を紹介したいと思います。 オールパスフィルタ―とは どんな利用用途があるか? オールパスフィルタのフィルタ構成 単純な遅延 (FIRフィルタ) 1次IIRオールパスフィルタ 2次IIRオールパスフィルタ N次IIR…

  • Pythonでボーカルやギターなどのエフェクターを簡単に実装・リアルタイム再生処理できるクラスの作成

    入出力の管理リアルタイム音響信号処理を使った身近な機器としては、ボーカルやギターなどの楽器で利用されているエフェクターが挙げられます。 エフェクターは信号処理としては簡単なのですが、実際にPCでプログラミングをして音を出力するのは準備が割と大変です。 そこで本記事では、Pythonでエフェクターをリアルタイム音響信号処理として簡単に実装可能&音としてすぐに聞けるクラスを作りました。 VSTなどのフレームワークのように audio_process(x, y)のような信号処理の関数を書くだけでエフェクターが実装・試聴できます。 使い方 Playerクラス実装の参考記事 使い方 以下のGithub上…

  • Python:VSTプラグインのようなエフェクター(音響効果処理)を簡単に実装・リアルタイム再生できるクラスの作成

    入出力の管理リアルタイム音響信号処理を使った身近な機器としては、ボーカルやギターなどの楽器で利用されているエフェクターが挙げられます。 エフェクターは信号処理としては簡単なのですが、実際にPCでプログラミングをして音を出力するのは準備が割と大変です。 そこで本記事では、Pythonでエフェクターをリアルタイム音響信号処理として簡単に実装可能&音としてすぐに聞けるクラスを作りました。 VSTなどのフレームワークのように audio_process(x, y)のような信号処理の関数を書くだけでエフェクターが実装・試聴できます。 使い方 Playerクラス実装の参考記事 使い方 以下のGithub上…

  • Python:numba (jit)で音響信号処理の高速化 - 2次IIRフィルタの処理時間計測

    数値計算でよく利用されている Python (CPython) ですが、for文の処理が遅いという問題点があります。 音響信号処理ではC/C++風に配列の各要素にアクセスが必要な処理を for文を使って実装することが多いため、これは致命的です。 そこで、Python用のjitコンパイラ numba で(リアルタイム)音響信号処理をどれくらい高速化できるか、音響信号処理でよく使われる2次IIRフィルタを使って計測・比較してみました。 numbaについて 概要 型指定 処理時間比較用スクリプト 測定環境 計測結果 関連文献 numbaについて 概要 A ~5 minute guide to Num…

  • オーディオテクニカの耳かけヘッドホン ATH-EM700 の分解と音質比較

    [:w500px] オーディオテクニカの耳かけヘッドホン ATH-EM700 ですが、故障により1台を分解することにしました。 修理の際に役立つと思い、 ATH-EM700 の内部構造をメモとして記録しておきたいと思います。 また、せっかくなので ATH-EM700 と他のオーディオテクニカの耳かけヘッドフォンの音質を比較します。 www.phileweb.com ATH-EM700 の分解 音質比較 まとめ ATH-EM700 の分解 分解前にATH-EM9Dと比較。 ATH-EW9などと比べても、ATH-EM700 は薄い筐体となっています。 耳掛けは EM700 のほうがよく開き、筐体に…

  • 適応逆ノッチフィルタによるサイン波/調波成分の抽出(Python実装)

    前回紹介した適応ノッチフィルタ は、正弦波信号を除去するアルゴリズムでした。 www.wizard-notes.com www.wizard-notes.com しかし、音楽信号処理でよくある楽音を抽出したいという要求には適応ノッチフィルタは利用しにくいです。 そこで今回は、正弦波信号を抽出する適応逆ノッチフィルタを紹介します。 適応逆ノッチフィルタの構成 直列適応逆ノッチフィルタ 実装 実行結果 まとめ 参考文献 適応逆ノッチフィルタの構成 逆ノッチフィルタの周波数応答(振幅特性)は下図のようになります。 ちょうどノッチフィルタの振幅特性を反転したような特性です。 そのため、ノッチフィルタの…

  • 多段適応ノッチフィルタで複数の正弦波を除去/ドラム・打楽器音の抽出(Python実装)

    前回の記事では、適応ノッチフィルタを使って音高が未知の正弦波を除去しました. www.wizard-notes.com しかし、正弦波が複数ある区間ではうまく動作しませんでした。 そこで、今回は複数の正弦波を除去できる、多段適応ノッチフィルタを紹介します。 また、多段適応ノッチフィルタの活用方法としてドラム・打楽器音を抽出してみます。 多段適応ノッチフィルタの構成 実装 適用結果 まとめ 多段適応ノッチフィルタの構成 [px] 構成方法としては、任意の数の適応ノッチフィルタを直列で接続すればOKです。 基本的には、接続した適応ノッチフィルタの数だけパワーの大きいサイン波を除去できます。 しかし…

  • Python:sounddeviceを使った音声ファイルの再生・リアルタイム処理の実装方法

    以下の記事では,Pythonで音の再生・録音を行うためのライブラリ sounddevice を紹介しました。 Python-sounddevice で音声や歌声をリアルタイム収音・再生・録音 - Wizard Notes この記事では、音の信号処理/アプリ開発でよく使う、音声ファイルの再生をsounddeviceを使ってどのように実装するかを紹介します。 方法1: オーディオをそのまま再生する 方法2: オーディオをリアルタイム処理して再生 方法2.1 マルチスレッド処理 方法3: オーディオをリアルタイム処理して再生(同期処理) まとめ 方法1: オーディオをそのまま再生する soundde…

  • Python:適応ノッチフィルタで正弦波(周期性雑音)を除去

    音響信号処理の良い参考書である プログラム101付き 音声信号処理 では、適応信号処理の一例として適応ノッチフィルタが紹介されています。 ただし、プログラムがC言語のみであり、また、数学的な説明が僅かであるため仕組みが分かりにくいです。 そこで、適応ノッチフィルタのPythonにおけるリアルタイム実装とアルゴリズムの詳細を説明したいと思います。 適応ノッチフィルタについて 信号処理における雑音除去の一つのユースケースについて、未知の狭帯域雑音(正弦波信号)を除去が挙げられます。 具体的な対象としては、交流電源由来のノイズやモーター/エンジンなどの回転音、音楽信号であれば調波楽器の基音・倍音成分…

  • グラフィックイコライザの周波数特性を補正するための最小二乗法による利得最適化

    前回は、単純なグラフィックイコライザとして、1/Nオクターブバンドごとに双二次フィルタを用意し直列接続した実装を解説しました。 www.wizard-notes.com しかし、この手法だと、グラフィックイコライザ全体の周波数特性として各中心周波数での振幅値が指定値から大きくズレてしまうという問題がありました。 この問題の解決方法として、最小二乗法での利得最適化によってグラフィックイコライザの振幅特性を補正する手法を紹介します。 なお、元論文は下記になります。 Abel, Jonathan S., and David P. Berners. "Filter design using secon…

  • Python:1/1, 1/3オクターブバンド グラフィックイコライザの実装

    音源制作の現場で最も利用されているプラグインの一つとして、ある周波数帯域を増幅/減衰させるイコライザがあります。 その一種であるグラフィックイコライザをPythonで実装してみます*1。 グラフィックイコライザについて オクターブバンド分割(中心周波数と帯域幅の決定) 実装 周波数特性のプロット まとめ、単純なグラフィックイコライザの問題点 参考文献 グラフィックイコライザについて イコライザにおいて重要なパラメタは、 中心周波数 帯域幅(Q値) 増幅/減衰させる量 の3つになります。 フィルタの構成方法はいくつがありますが、特に双2次フィルタ(Biquad filter)を使う方法がよく知ら…

  • エレクトロニカ風の音楽を自動作曲・自動演奏し続けるリズムマシンWebアプリ

    エレクトロニカっぽい曲を自動生成&展開し続けるリズムマシンのWebアプリ試作 #javascript #webaudioapi #React Electronica Machine v0.1https://t.co/HiqdWvGV7d pic.twitter.com/zjsJosajte— Kurene (@_kurene) 2022年8月21日 当初は単純なドラムマシンを作っていましたが、いろいろ触っているうちに自動作曲と人による入力制御が共存するような自動演奏/作曲支援アプリの方が面白いと感じたため今回のようなアプリになりました。 音楽系Webアプリ開発の参考になるように、工夫した点や参…

  • Python:PyQtでQMainWindowに非依存な複数のQWidgetを同時に表示する

    www.wizard-notes.com 上記の例の派生版です。 やりたいこととしては、 複数ある QWidget (個々のGUI)を表示 ここのQWidget はQMainWindowと結合していない QMainWindowは与えられた複数の QWidget を表示する となります。 なお、下記の例ではQMainWindow自体はGUIとしての役割を持たないため表示させない、という場合を想定しています。 sub_windowにリストの要素として与えるオブジェクトはQWidgetを継承していれば何でもよいため、個々に作ったQWidgetを一気に複数表示できます。 具体的には、異なる種類のグラフ…

  • BelkinのMagSafe対応 2-in-1 ワイヤレス充電器のレビュー(Ankerの2-in-1製品との比較付き)

    iPhone13 pro max を導入した後にワイヤレス充電器を導入してみたいと思い始め、洗練されたデザインの充電スタンドを探していました。 そして先日のPrime Dayで第1候補だったBelkinのBOOST↑CHARGE PRO MagSafe 2-in-1 が8991円だったのでついに導入することができました。 ケーブルの抜き差しの手間がなくなり、また、充電中の操作も楽なので非常に快適です。 似た大きさの2-in-1ワイヤレス充電器の購入候補製品として、Anker社の3つの製品がありました。 以下は比較表になります。 Belkin Anker Anker Anker BOOST↑CH…

  • pyrirtool: Pythonで手軽にインパルス応答を測定・録音できるツール

    音響分野において指数チャープ信号などを使ったインパルス応答の測定は非常に重要ですが、測定条件に対して柔軟に対応できる測定用ソフトウェアを自前で用意するのは結構手間です。 そこで、Pythonで手軽に利用できるインパルス応答測定ツール pyrirtool を紹介します。 pyrirtoolは再生・録音処理にsounddeviceを利用しているため,最新のバージョンのPythonでも動作します. 利用方法 準備 コード修正 利用方法 初期設定 入出力デバイスの確認 測定の実行 測定結果の例 利用方法 準備 github.com こちらの pyrirtoolのファイル一式をダウンロードしてきます。 …

  • フィードバックキャンセラによるハウリング除去のPython実装・評価

    カラオケや補聴器のような音響システムでは、スピーカから出力した音が再びマイクへの入力としてフィードバックされることによる発振ハウリングが問題となります. このハウリングを信号処理(適応フィルタ)によって除去する方法として、フィードバックキャンセラ(ハウリングキャンセラ)が知られています。 例えば、以下の書籍ではフィードバックキャンセラのC言語実装が掲載されています。 上記の書籍を参考に原理を整理しフィードバックキャンセラをPythonで実装してみましたので紹介します。 問題設定 数理モデル・変数 最適化 Python 実装 評価 まとめ 参考文献 問題設定 フィードバックキャンセラの系は以下の…

  • Python:Pyroomacousticsを使ってインパルス応答を作成

    Pyroomacoustics はPython向けの音響アレイ信号処理のラピッドプロトタイピングプラットフォームです。 github.com Pyroomacoustics の便利な機能の一つとして、僅かな行数のスクリプトで多面体の部屋の室内インパルス応答を生成することができます。 インパルス応答の生成スクリプト import numpy as np import soundfile as sf import matplotlib.pyplot as plt import pyroomacoustics as pra # パラメタ fs = 44100 # サンプリング周波数 absorpti…

  • OpenAir:様々な空間で収録されたインパルス応答 (IR) の無料データセット

    https://www.openair.hosted.york.ac.uk/ 動画やゲーム,AR/MRコンテンツで利用する音源にリアルな残響音を付加する手法として、コンボリューション(畳み込み)リバーブがあります。 これは、インパルス応答と呼ばれる実測で収録した残響音データを使って、実際に存在する空間の反響・残響を生み出すことができます。 コンボリューション リバーブ Unreal Engine ドキュメント コンボリューションリバーブ自体の実装は非常に簡単です。 しかし、個人で高品質なインパルス応答を収録するのは技術や機材的に難しいです。 そこで、様々な空間のインパルス応答のライブラリを…

  • オーディオテクニカの耳掛けイヤホン ATH-EM9R のノイズ(ビビり音)を修理する

    ATH-EM9Rで音楽を聞いていると、両耳とも少しノイズ(ビビり音)があるように聴こえたので、分解して修理してみました。 結論としては、イヤーパッドの劣化が原因でした。 構造的に、ATH-EM9Rだけでなく ATH-EW9, ATH-EM9D, ATH-EM7, ATH-EM700 などでも同じ事象が起こる可能性があると考えられます。 以前に分解/修理したATH-EW9やATH-EM7と違い、ATH-EM9R/Dは耳側からネジ止めされています。 www.wizard-notes.com www.wizard-notes.com 今回はイヤーパッドも交換するため、遠慮なく古いイヤーパッドが剥がし…

ブログリーダー」を活用して、Kureneさんをフォローしませんか?

ハンドル名
Kureneさん
ブログタイトル
Wizard Notes
フォロー
Wizard Notes

にほんブログ村 カテゴリー一覧

商用