🮘🮘🮘 uhhyou 🮘🮘🮘
2018/03/29
1次元の分数階Zener波動方程式
「1次元の分数階Zener波動方程式」を読む (github.io)
1次元の分数階Zener波動方程式 (fractional Zener model wave equation) のシミュレーションです。パラメータの組み合わせによっては発散します。
分数階Zener波動方程式はHolmとNäsholmによる
"A causal and fractional all-frequency wave equation for lossy media"
で紹介されていました。
2018/03/26
分数階微分で1次元の熱伝導-波動方程式
「分数階微分で1次元の熱伝導-波動方程式」を読む (github.io)
分数階微分を使って1次元の
熱伝導方程式
と
波動方程式
をくっつけました。
Implicit FDM
と
Grünwald-Letnikovの分数階微分
を組み合わせて離散化したのですが、パラメータによっては発散することがあります。
2018/03/21
分数階微積分の数値計算
「 分数階微積分の数値計算」を読む (github.io)
分数階微積分
を
Grünwald–Letnikovの定義
を使って数値計算します。画像は今回の数値計算に使った分数階微分と分数階積分の式です。
分数階微積分が物理的にどういう意味を持つのかはよくわかりませんが、
波動方程式への応用
が提案されています。
2018/03/15
ギブズ現象を抑える
「ギブズ現象を抑える」を読む (github.io)
GottleibとShuの論文
"ON THE GIBBS PHENOMENON AND ITS RESOLUTION"
を基に
ギブズ現象
を抑える方法を試しました。
ギブズ現象が発生している信号から
Gegenbauer polynomial
の係数を取り出して再合成するという方法です。再合成する区間に不連続な部分が含まれていると上手くいかないので、実際に使うときは信号を不連続な部分で区切って分割する必要があります。
2018/03/11
Implicit FDM を用いた1次元の波のシミュレーション
「Implicit FDM を用いた1次元の波のシミュレーション」を読む (github.io)
前回のシミュレーション
では
Explicit FDM
を用いていたので、パラメータの値によっては発散するという問題がありました。
Implicit FDM
を使えば計算コストと引き換えに発散しなくなります。
動画は前回と今回のシミュレーションの比較です。左が Implicit FDM 、右が Explicit FDM です。
2018/03/03
1次元の波のシミュレーション
「1次元の波のシミュレーション」を読む (github.io)
1次元の波のシミュレーションについてまとめました。
以前に波をシミュレーションしたとき
は、時間や長さといったパラメータについては適当でした。今回はパラメータの設定を行いたかったので、波動方程式から有限差分法で離散化する手順について調べました。
2018/02/25
n dB/octのスロープを持つフィルタ
「n dB/octのスロープを持つフィルタ」を読む (github.io)
IDFTを利用した任意のスロープを持つフィルタの作り方と、 n dB/oct のスロープを持つフィルタの解析解について調べたことをまとめました。
2018/02/24
お手軽なFIRフィルタのレシピ
「お手軽なFIRフィルタのレシピ」を読む (github.io)
FIR
のローパス、ハイパス、バンドパス、バンドリジェクトフィルタの作り方をまとめました。
元は
WaveCymbal
のバンドパスとして試したのですが、切れすぎて Karplus-Strong 間の干渉がほとんど無くなり面白くない音になることが分かりました。
2018/02/17
WaveCymbal
デモを見る (github.io)
WaveCymbal は
Banded Waveguides
を利用したシンセサイザです。シンバルというよりは空き缶のような音がでます。
仕組み
下図はWaveCymbal の大まかな信号の流れです。
まずインパルスをコムフィルタに通して衝突音を作ります。これが Input になります。
Input は 1D Wave へと入力されます。1D Wave では1次元の波のシミュレーションを行っています。
1D Wave の複数の地点からの出力を、それぞれバンドパスフィルタに通して並列に並べた Karplus-Strong へと送ります。Karplus-Strong からの出力はそれぞれ対応する 1D Wave の地点へとフィードバックされます。
並列に並べた Karplus-Strong からの出力を加算したものが Output になります。
問題点
1D Wave のシミュレーションが適当なので、システムのサンプリング周波数によってピッチが変わる問題があります。
2018/02/02
KSCymbal
デモを見る (github.io)
Karplus-Strongアルゴリズム
を応用したシンバルの音を合成するシンセサイザです。
閉じたハイハットを叩くと上下のシンバルが複雑にぶつかりあいます。KSCymbalではこのぶつかる部分をシミュレーションに組み込みました。ただ、あくまでもKarplus-Strongなのでシンバルというよりギターの弦をたくさん並べてぶつけあっているというイメージの方が近いです。
デモのDistanceがシンバル間の距離を表しています。この値を小さくするとぶつかる回数が多くなります。
発振する場合はDistanceの値を上げるかSeedを変更してみてください。
Pluck
デモを見る (github.io)
Karplus-Strongアルゴリズム
を用いたシンセサイザです。
Karplus-Strongアルゴリズムはギターなどの撥弦楽器のような音が出せます。デモページのCutoffの値を1にすると素朴なKarplus-Strongの音になります。
フィルタのかけ方は
mrahtzさんの実装
を参考にしました。
新しい投稿
前の投稿
ホーム
登録:
投稿 (Atom)