tag:blogger.com,1999:blog-36257408372768680402024-03-19T09:04:19.155+09:00 uhhyou 𒀯ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comBlogger280125tag:blogger.com,1999:blog-3625740837276868040.post-52039733346243824782024-02-25T19:52:00.001+09:002024-02-25T20:54:24.440+09:00Release of UhhyouPluginsJuce / UhhyouPluginsJuce のリリース<p>Plugins in <a href="https://github.com/ryukau/UhhyouPluginsJuce">UhhyouPluginsJuce</a> repository are now available on <a href="https://github.com/ryukau/UhhyouPluginsJuce/releases">Release page</a>. On Linux, it's probably better to build from source code, because some library versions may differ from the ones on GitHub Actions runner.<br /></p><p>--- <br /></p><p>前 2 回の投稿でリンクした <a href="https://github.com/ryukau/UhhyouPluginsJuce">UhhyouPluginsJuce</a> のプラグインを <a href="https://github.com/ryukau/UhhyouPluginsJuce/releases">Release ページ</a>からダウンロードできるようにしました。 Linux 環境では動的リンクを行うライブラリのバージョンが一致しなければ動かないので、ソースコードからビルドすることを推奨します。</p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-79075495155039678032024-02-24T19:57:00.001+09:002024-02-24T19:57:58.454+09:00TwoBandStereo<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEJJWAXfGnHk89vI-A2ibP1LhwaF15VvJDpmxaDvE12Nsp4ISDfawpqUsRTEQ4jUgwP2pW19vlotrwn70wWqbaEEY6yajrLLkDggQFCesYMG2Y4WuXRQFUh3WBAfhPJ94r4FamCXmiGvpmqaxg3ynKQ-h91xxG54dSPNrQEF1IuszfhpqXpr-0yno5JoU/s462/TwoBandStereo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="302" data-original-width="462" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEJJWAXfGnHk89vI-A2ibP1LhwaF15VvJDpmxaDvE12Nsp4ISDfawpqUsRTEQ4jUgwP2pW19vlotrwn70wWqbaEEY6yajrLLkDggQFCesYMG2Y4WuXRQFUh3WBAfhPJ94r4FamCXmiGvpmqaxg3ynKQ-h91xxG54dSPNrQEF1IuszfhpqXpr-0yno5JoU/s320/TwoBandStereo.png" width="320" /></a></div><p>TwoBandStereo is a plugin to narrow down stereo spread.</p><p>This plugin is made to test FIR Linkwitz-Riley filter implementation linked in "<a href="https://ryukau.github.io/filter_notes/crossover_filter/crossover_filter.html">クロスオーバーフィルタの実装</a>". Currently only <a href="https://github.com/ryukau/UhhyouPluginsJuce/tree/main">available as source code</a>. Another reason this plugin was made is that it felt cumbersome to use <a href="https://www.image-line.com/fl-studio-learning/fl-studio-beta-online-manual/html/plugins/Frequency%20Splitter.htm">Frequency Splitter</a> in FL Studio just to narrow down the stereo spread of lower band.<br /></p><p>---<br /></p><p>TwoBandStereo は 2 バンドのステレオの狭さを調整するプラグインです。</p><p>「<a href="https://ryukau.github.io/filter_notes/crossover_filter/crossover_filter.html">クロスオーバーフィルタの実装</a>」で紹介している FIR の Linkwitz-Riley フィルタのテスト用に作った簡易なプラグインなので<a href="https://github.com/ryukau/UhhyouPluginsJuce/tree/main">ソースコードのみで公開</a>しています。個人的な話ですが、低域だけステレオを狭めたいときに FL Studio の <a href="https://www.image-line.com/fl-studio-learning/fl-studio-beta-online-manual/html/plugins/Frequency%20Splitter.htm">Frequency Splitter</a> を使うのが手間だったので独立したプラグインにしました。<br /></p><p></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-33562876470954722132024-02-17T07:33:00.007+09:002024-02-29T21:48:17.974+09:00AM のアンチエイリアシング<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB4DOKlHOLqTVjnsbOq9g1un0DZSQvGFVAVF2629949QpHEoNWyhsUrs_85si3tH8g20hN2KSZxJrNyXvWzb9ghEYLvuxInOuvRBnoG9AyWadt9hP-qxpmQqYM-pkZoVo2EHT-mf1B2jSVFEZnxGVm6G_xAsKpNrUU2K3ch4iBz4RbBqgwxmN4q8mgstI/s633/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202024-02-18%20144554.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="363" data-original-width="633" height="184" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB4DOKlHOLqTVjnsbOq9g1un0DZSQvGFVAVF2629949QpHEoNWyhsUrs_85si3tH8g20hN2KSZxJrNyXvWzb9ghEYLvuxInOuvRBnoG9AyWadt9hP-qxpmQqYM-pkZoVo2EHT-mf1B2jSVFEZnxGVm6G_xAsKpNrUU2K3ch4iBz4RbBqgwxmN4q8mgstI/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202024-02-18%20144554.png" width="320" /></a></div><p></p><p><a href="https://ryukau.github.io/filter_notes/amplitude_modulation/amplitude_modulation.html">Read "AM のアンチエイリアシング" (github.io)</a></p><p>The above link is an article about anti-aliasing of amplitude modulation (AM). It's written in Japanese, so I'd recommend to use machine translation if you are interested in. The content is some basic application of multi-rate processing and frequency shift.</p><p>The image shows a block diagram of anti-aliasing of double side-band AM.<br /></p><p>A tip is that it's better to set higher stop-band gain (-60 dB) for elliptic high-pass filter, which is used for lower side-band (LSB) anti-aliasing. For musical application, I'd like to set -145 dB as a stop-band gain. However higher stop-band gain makes the transition band narrower, and it prevents to remove too much contents from lower frequencies.</p><p>These anti-aliasing techniques are implemented as a plugin AmplitudeModulator. The sound is not interesting, so the plugin is currently only available as source code in the link below.<br /></p><p><a href="https://github.com/ryukau/UhhyouPluginsJuce">UhhyouPluginsJuce (github.com)</a> <br /></p><p>Edit on 2024-02-18: Fixed the image to the correct one. Previous image was anti-aliasing of lower side-band.<br /></p><p>---<br /></p><p><a href="https://ryukau.github.io/filter_notes/amplitude_modulation/amplitude_modulation.html">AM のアンチエイリアシングを読む (github.io)</a></p><p><a href="https://ryukau.blogspot.com/2023/07/growlsynth.html">GrowlSynth</a> の音の改善のために AM のアンチエイリアシングについて試したことをまとめました。内容はマルチレート処理と周波数シフトの応用です。</p><p>記事のトップの画像は両側波帯が出る AM (DSB-AM) のアンチエイリアシングの処理を示したブロック線図です。<br /></p><p>リンク先の記事で軽く触れていますが、コツは下側波帯のエイリアシングを抑える楕円ハイパスフィルタのストップバンドゲインを、音楽向けとしては高めの -60 dB に設定することです。 -145 dB に設定することが理想ですが、遷移帯の幅が広くなりすぎてエイリアシングか低域の低減が避けられなくなります。</p><p>AmplitudeModulator というプラグインとしても実装しました。音は面白くないので今のところソースコードのみを下のリンク先で配布しています。 </p><p><a href="https://github.com/ryukau/UhhyouPluginsJuce">UhhyouPluginsJuce (github.com)</a></p><p>2024/02/18 変更: 画像を正しいブロック線図に修正。以前のものは下側帯波のアンチエイリアシングのブロック線図だった。<br /></p><p></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-10994570485673007182024-01-24T22:17:00.002+09:002024-01-24T22:17:22.017+09:00Randomization Lock / ランダマイズのロック<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7C3Y7Aky0cd-zaLnsE9azoJBohyphenhyphenDYMIszJtUidN5hCSDGxNOc0Ucuq69lfRWdhGrhPbtyu_yoEdj14S0Dbf7rwSc17HM-hFZIMvhuVU1tORrRN9CZr-S32usd2mPXsBvi3VU8X8YEWNrTwn0Hryf0vyeXQqMwVdFsGGEzmH1ORCgMa4Sv5FszdKHph2w/s814/Screenshot%202024-01-24%20at%2022.16.39.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="348" data-original-width="814" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7C3Y7Aky0cd-zaLnsE9azoJBohyphenhyphenDYMIszJtUidN5hCSDGxNOc0Ucuq69lfRWdhGrhPbtyu_yoEdj14S0Dbf7rwSc17HM-hFZIMvhuVU1tORrRN9CZr-S32usd2mPXsBvi3VU8X8YEWNrTwn0Hryf0vyeXQqMwVdFsGGEzmH1ORCgMa4Sv5FszdKHph2w/s320/Screenshot%202024-01-24%20at%2022.16.39.png" width="320" /></a></div><p>Randomization lock is now available on <a href="https://github.com/ryukau/UhhyouWebSynthesizers">UhhyouWebSynthesizers</a>. Clicking a label next to a parameter enables a lock. The label becomes gray when the lock is enabled.</p><p>---</p><p><a href="https://github.com/ryukau/UhhyouWebSynthesizers">UhhyouWebSynthesizers</a> のランダマイズをパラメータごとに有効、無効にできるロック機能を追加しました。パラメータの隣にあるラベルをクリックするとロックの切り替えができます。ロック有効時はラベルが灰色に変わります。</p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-86934705941464010562024-01-23T14:11:00.005+09:002024-01-24T22:17:53.040+09:00Import/Export Is Now Available on UhhyouWebSynthesizers / インポート・エクスポートを UhhyouWebSynthesizers に追加<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7KOaY7RJkafabqta0S47bR3GQvKX6QDFLRbywuRk7SH0WLD4WKA2I3lCOQlS3oHqYFujM24_NZZQTqEpPElSgF-DzzjiJXpyjPbTh07HiedMPuXrmjxdFr44a53jhwnQLLrynhAhdqQF7Z4cztU-Z4jAJj6CMwy8w-Bke-kl4lYJlBwHdOdl-dISfHMA/s812/Screenshot%202024-01-23%20at%2014.09.39.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="812" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7KOaY7RJkafabqta0S47bR3GQvKX6QDFLRbywuRk7SH0WLD4WKA2I3lCOQlS3oHqYFujM24_NZZQTqEpPElSgF-DzzjiJXpyjPbTh07HiedMPuXrmjxdFr44a53jhwnQLLrynhAhdqQF7Z4cztU-Z4jAJj6CMwy8w-Bke-kl4lYJlBwHdOdl-dISfHMA/w320-h211/Screenshot%202024-01-23%20at%2014.09.39.png" width="320" /></a></div><p>Import/Export functionality is added on <a href="https://ryukau.github.io/UhhyouWebSynthesizers/">UhhyouWebSynthesizers</a>. They can be used to save the parameter state as a JSON file. The new buttons are added under Random button, which is placed on top-left part of the interface.</p><p></p><ul style="text-align: left;"><li>Export button opens a dialog to save parameters to a file.</li><li>Import button opens a dialog to load parameters from a file (.json).</li><li>Push button temporarily saves current parameters to the pull-down menu right next to Random button.</li></ul><div>The temporary saves have names like `tmp - <timestamp>`. <timestamp> part will be replaced to an ISO 8601 time which looks like "2024-01-01T012345.678+0900" for example. <span style="color: #e69138;">Note that reloading the page clears the temporary saves</span>.</div><p></p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/">UhhyouWebSynthesizers</a> のパラメータの状態を JSON 形式でインポート・エクスポートできるようになりました。画面左上の Random ボタンの下に Push, Export, Import ボタンが増えています。</p><p></p><ul style="text-align: left;"><li>Export ボタンでパラメータをファイルに保存するダイアログを表示。</li><li>Import ボタンで保存したパラメータを読み込むダイアログを表示。</li><li>Push ボタンで一時的に現在のパラメータを保存。</li></ul><div>Push ボタンで一時的に保存されたパラメータは Random ボタンの隣のメニューに `tmp - <タイムスタンプ>` という名前で追加されます。 <タイムスタンプ> の部分には "2024-01-01T012345.678+0900" のような ISO 8601 形式の時間が入ります。<span style="color: #e69138;">ブラウザの画面を更新すると Push ボタンの一時保存データは失われるので注意してください</span>。</div><p></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-14394551840534307332024-01-02T03:03:00.002+09:002024-01-24T22:18:58.982+09:00FV1Reverb<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN0ZPXuZLhgT4Wo-o5EV2uz1Xz4WnE5NBlpeLyJG-vtHdyFWfvMvD_71ZQ0-kbOe-to1nJswll8df1959tNkJGviqk7UX-2L2Hx7vXgbNYkmBZ8KDXMjzrYKDYd_bvFIxN3HpHsAZ5EoT3FTZGU9gVnim58BVoCJZWfMIlp2o_WywyEtMT4WgJEmWSnLI/s1796/Screenshot%202024-01-24%20at%2022.18.21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1796" data-original-width="1680" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN0ZPXuZLhgT4Wo-o5EV2uz1Xz4WnE5NBlpeLyJG-vtHdyFWfvMvD_71ZQ0-kbOe-to1nJswll8df1959tNkJGviqk7UX-2L2Hx7vXgbNYkmBZ8KDXMjzrYKDYd_bvFIxN3HpHsAZ5EoT3FTZGU9gVnim58BVoCJZWfMIlp2o_WywyEtMT4WgJEmWSnLI/s320/Screenshot%202024-01-24%20at%2022.18.21.png" width="299" /></a></div><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/FV1Reverb/synth.html">Try FV1Reverb (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>FV1Reverb is a reverb using the loop structure described in <a href="http://www.spinsemi.com/knowledge_base/effects.html">a page of Spin Semiconductor</a> (Reverberation section).</p><p>Metallic texture can be obtained by lowering `Time Multiplier`. There's no multi-tap delay before inputting the loop, so it might be better to use with other short reverb.</p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/FV1Reverb/synth.html">FV1Reverb を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>FV1Reverb は <a href="http://www.spinsemi.com/knowledge_base/effects.html">Spin Semiconductor のページ</a> (Reverberation の節) で紹介されていたループ構造を使ったリバーブです。</p><p>`Time Multiplier` を下げると金属音が出せます。ループの前のマルチタップディレイはついていないので、別の短いリバーブと組み合わせるといいかもしれません。</p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-45146838119818273592023-10-09T21:45:00.000+09:002023-10-09T21:45:18.663+09:00GenericDrum VST 3<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/cJ3uwW78jgU" width="320" youtube-src-id="cJ3uwW78jgU"></iframe></div><p><a href="https://ryukau.github.io/VSTPlugins/manual/GenericDrum/GenericDrum_en.html">Download GenericDrum Plugin (github.io)</a><br /><a href="https://github.com/ryukau/VSTPlugins">Source Code (github.com)</a></p><p>VST 3 version of GenericDrum is now ready. I guess this one is easier to use than previous plugins because I did some musical tuning instead of exploring parameters.</p><p>GenericDrum is a generic drum synthesizer using delays. This one can make convincing snare and bass drum sounds. Cymbal sounds can be made, but it’s not good as good as more lower drum sounds.</p><p>For more information, the manual has a lengthy <a href="https://ryukau.github.io/VSTPlugins/manual/GenericDrum/GenericDrum_en.html#mechanism-overview">"Mechanism Overview" section</a>.<br /></p><p>---</p><p><a href="https://ryukau.github.io/VSTPlugins/manual/GenericDrum/GenericDrum_ja.html">GenericDrum プラグイン版をダウンロード (github.io)</a><br /><a href="https://github.com/ryukau/VSTPlugins">ソースコード (github.com)</a></p><p>VST 3 版の GenericDrum が準備できました。このシンセではパラメータの探索をやめて音楽的なチューニングを心掛けたので今までのプラグインよりは使いやすいかと思います。</p><p>GenericDrum はディレイを使った汎用ドラムシンセサイザです。バスドラムやスネアドラムについては良い音が出ます。シンバルの音も出せますが、低いドラムの音ほど良くはありません。</p><p>マニュアルの<a href="https://ryukau.github.io/VSTPlugins/manual/GenericDrum/GenericDrum_ja.html#%E4%BB%95%E7%B5%84%E3%81%BF">「仕組み」</a>の節で大まかな動作を解説しています。<br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-76380786904585491082023-10-02T21:15:00.002+09:002023-10-02T21:15:20.496+09:00Preview of GenericDrum Plugin<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/KjY8A9GjPW4" width="320" youtube-src-id="KjY8A9GjPW4"></iframe> <br /></div><p>This video shows VST 3 version of GenericDrum. It's work in progress.</p><p>---</p><p>この動画は GenericDrum の VST 3 版のプレビューです。まだ作りかけです。<br /></p><p></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-30681432612136942122023-09-03T20:22:00.005+09:002023-09-05T20:12:47.145+09:00GenericDrum<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/KWrHG5TtXSw" width="320" youtube-src-id="KWrHG5TtXSw"></iframe></div><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/GenericDrum/synth.html">Try GenericDrum (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>GenericDrum is a generic drum synthesizer based on <a href="https://ryukau.blogspot.com/2022/10/clangsnare.html">ClangSnare</a>. The number of parameters has been reduced for ease of use.</p><p>Noise generator, serial all-pass, feedback delay network (FDN) are connected in sequence.</p><p>The low-pass of noise generator is based on <a href="https://ccrma.stanford.edu/~jos/filters/Time_Varying_Two_Pole_Filters.html">complex resonator</a>, but the design is ad-hoc, so the sound changes depending on sampling rate. This ad-hoc filter is used because usual biquad low-pass is too steep for sound shaping. In hindsight, <a href="https://ryukau.blogspot.com/2023/06/slope-filter.html">SlopeFilter</a> might be more adequate. Maybe I'll change it later.<br /></p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/GenericDrum/synth.html">GenericDrum を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>GenericDrum は <a href="https://ryukau.blogspot.com/2022/10/clangsnare.html">ClangSnare</a> を基にして、使い易いようにパラメータを減らした汎用ドラムシンセサイザです。</p><p>中身は、ノイズジェネレータ → 直列オールパス → フィードバックディレイネットワーク (FDN) と順に接続されています。</p><p><a href="https://ccrma.stanford.edu/~jos/filters/Time_Varying_Two_Pole_Filters.html">複素レゾネータ</a>を基にしてノイズジェネレータのローパスをでっち上げたのですが、設計が適当なのでサンプリング周波数によって音が変わります。バイクアッドのローパスよりも緩やかな切れ味のフィルタが欲しかったのですが失敗でした。書いていて思い出したのですが <a href="https://ryukau.blogspot.com/2023/06/slope-filter.html">SlopeFilter</a> のほうが適している気がします。<br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-52655078807771526782023-08-22T12:04:00.005+09:002023-08-22T12:04:55.466+09:00HooverSynth<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/8aYMMJ6VauA" width="320" youtube-src-id="8aYMMJ6VauA"></iframe></div><p></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/HooverSynth/synth.html">Try HooverSynth (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>HooverSynth is a hoover sound synthesizer. <br /></p><p>Original hoover sound is made from Alpha Juno or MKS-50. This time, I spent more time on researching Alpha Juno rather than writing code. Following is a list of links I used while developing HooverSynth.<br /></p><ul style="text-align: left;"><li><a href="https://en.wikipedia.org/wiki/Hoover_sound">Hoover sound - Wikipedia</a></li><li><a href="http://llamamusic.com/mks50/mks-50.html">Roland MKS-50 Alpha Juno and SynthPlus Homepage - Your One Stop Resource For MKS-50, Alpha Juno and SynthPlus Synthesizers - Patches, Tones, DIYs, Info And Utilities</a></li><li><a href="http://www.synfo.nl/">SYNFO - THE 20th CENTURY SYNTHESIZER DATABASE</a></li><li><a href="https://www.florian-anwander.de/roland_string_choruses/">roland_ensembleFX_choruses</a></li><li><a href="https://www.musicradar.com/how-to/how-to-design-a-dominator-style-hoover-sound-with-audiorealisms-redominator">How to design a Dominator-style hoover sound with AudioRealism's ReDominator | MusicRadar</a></li><li><a href="https://www.youtube.com/watch?v=Nc8TOPMzZt8">ReDominator VSTi: Creating the legendary Hoover sound in 1-2-3 - YouTube</a></li><li><a href="https://www.youtube.com/watch?v=hyg5lD__jJw">Alpha Juno 2 Sawtooth "PWM" - YouTube</a></li></ul><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/HooverSynth/synth.html">HooverSynth を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>HooverSynth はフーバーサウンドに特化したシンセサイザです。</p><p>元のフーバーサウンドは Alpha Juno や MKS-50 といったシンセサイザで作られていたそうです。今回はコードを書いているよりも Alpha Juno の動作とレシピを調べる時間のほうが長くかかりました。以下は作るときに参考にした資料の一覧です。</p><ul style="text-align: left;"><li><a href="https://en.wikipedia.org/wiki/Hoover_sound">Hoover sound - Wikipedia</a></li><li><a href="http://llamamusic.com/mks50/mks-50.html">Roland MKS-50 Alpha Juno and SynthPlus Homepage - Your One Stop Resource For MKS-50, Alpha Juno and SynthPlus Synthesizers - Patches, Tones, DIYs, Info And Utilities</a></li><li><a href="http://www.synfo.nl/">SYNFO - THE 20th CENTURY SYNTHESIZER DATABASE</a></li><li><a href="https://www.florian-anwander.de/roland_string_choruses/">roland_ensembleFX_choruses</a></li><li><a href="https://www.musicradar.com/how-to/how-to-design-a-dominator-style-hoover-sound-with-audiorealisms-redominator">How to design a Dominator-style hoover sound with AudioRealism's ReDominator | MusicRadar</a></li><li><a href="https://www.youtube.com/watch?v=Nc8TOPMzZt8">ReDominator VSTi: Creating the legendary Hoover sound in 1-2-3 - YouTube</a></li><li><a href="https://www.youtube.com/watch?v=hyg5lD__jJw">Alpha Juno 2 Sawtooth "PWM" - YouTube</a></li></ul>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-72556279603297885642023-08-19T09:52:00.004+09:002023-08-19T19:23:32.216+09:00ResonantDrop<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/0po3a3g2k1o" width="320" youtube-src-id="0po3a3g2k1o"></iframe></div><p></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/ResonantDrop/synth.html">Try ResonantDrop (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>ResonantDrop is a synthesizer that is made to test resonators. It can resemble the sound of small falling objects by using a multi-tap delay that shifts the start of the sound.</p><p><a href="https://ccrma.stanford.edu/~jos/filters/Time_Varying_Two_Pole_Filters.html">Complex one-pole resonator</a> is used. I was wondering that if I could utilize this complex filter, and took imaginary part without much thought. It turned out that the gain response looks similar to <a href="https://ccrma.stanford.edu/~jos/filters/Constant_Peak_Gain_Resonator.html">second-order resonator</a>.</p><p>Transfer function of real and imaginary output of complex resonator is currently documented as <a href="https://github.com/ryukau/UhhyouWebSynthesizers/blob/eff1965e55467f863236701f1ec82c5483ea44c9/common/dsp/svf.js#L308-L383">a comment in source code</a>.<br /></p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/ResonantDrop/synth.html">ResonantDrop を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>ResonantDrop はレゾネータを試すために作ったシンセサイザです。音の出だしをずらすディレイによって複数の小さな物が落ちたときのような音を作ることができます。</p><p>今回使ったレゾネータは <a href="https://ccrma.stanford.edu/~jos/filters/Time_Varying_Two_Pole_Filters.html">1 次複素レゾネータ (complex one-pole resonator)</a> です。適当に虚部だけを取り出してみたところ、 <a href="https://ccrma.stanford.edu/~jos/filters/Constant_Peak_Gain_Resonator.html">2 次レゾネータ</a>の特性と似ていたのでそのまま使いました。</p><p>複素レゾネータの実部と虚部だけを取り出したときの伝達関数を<a href="https://github.com/ryukau/UhhyouWebSynthesizers/blob/eff1965e55467f863236701f1ec82c5483ea44c9/common/dsp/svf.js#L308-L383">ソースコードのコメント</a>に書いています。<br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-563699335806187172023-08-14T20:12:00.004+09:002023-08-15T08:40:06.857+09:00AdaptiveNotchComb<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/KRsi6Es6HY8" width="320" youtube-src-id="KRsi6Es6HY8"></iframe></div><p></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/AdaptiveNotchComb/synth.html">Try AdaptiveNotchComb (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>AdaptiveNotchComb is a metallic sound synthesizer using a combination of serially connected comb filters and serially connected <a href="http://www.apsipa.org/proceedings/2018/pdfs/0001355.pdf">adaptive notch filters</a>. Each comb filter also has an adaptive notch filter on their feedback path.</p><p>Adaptive notch filter is quite good at suppressing tones of feedback comb filter. However, this notch filter increases gain. So I made an attempt to normalize the maximum gain to 0 dB. It seems to be working on feedback path, but blows up when serially connected.</p><p>Edited on 2023-08-15: The gain normalization was wrong. It's fixed now.<br /></p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/AdaptiveNotchComb/synth.html">AdaptiveNotchComb を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>AdaptiveNotchComb は直列につないだコムフィルタと、直列につないだ<a href="http://www.apsipa.org/proceedings/2018/pdfs/0001355.pdf">適応ノッチフィルタ</a>の組み合わせで金属音を出すシンセサイザです。各コムフィルタのフィードバック経路にも適応ノッチフィルタを挟んでいます。</p><p>適応ノッチフィルタはフィードバックコムフィルタのトーンを抑えて聞きやすい音に整えてくれます。ただし、カットオフ周波数から離れた部分はゲインが上がるという難点があります。最大ゲインが 0 dB となるように正規化を試みたところ、コムフィルタのフィードバック経路ではうまくいったのですが、直列につなぐと発散することがありました。</p><p>2023-08-15 追記: ゲインの正規化の実装が間違っていたので修正しました。<br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-27876529919010607642023-08-09T10:15:00.000+09:002023-08-09T10:15:08.680+09:00SlipOutComb<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/ily-exw_R1w" width="320" youtube-src-id="ily-exw_R1w"></iframe></div><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/SlipOutComb/synth.html">Try SlipOutComb (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>SlipOutComb is a network of feedback comb filters that modulates band-pass cutoff to trying to slip out from blowing up condition. Note that sometimes SlipOutComb fails to slip out and outputs silence.</p><p>Internally, several comb filters are connected as a feedback delay network (FDN). Number of comb filters can be changed by `FDN -> Matrix Size`.</p><p>When it blows up, try reducing following parameters from top to bottom.</p><ul style="text-align: left;"><li>FDN -> Cross Feedback Decay</li><li>Comb -> Feedback Decay</li><li>Comb -> Delay</li><li>Comb -> Cut Modulation Rise/Fall<br /></li></ul><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/SlipOutComb/synth.html">SlipOutComb を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>SlipOutComb は発散からすり抜けるようにバンドパスのカットオフを変調するフィードバックコムフィルタです。ただし SlipOutComb は発散状態からすり抜けることに失敗して無音を出力することがあるので注意してください。 </p><p>内部では複数のコムフィルタがフィードバックディレイネットワーク (FDN) として互いに接続されています。コムフィルタの数は `FDN -> Matrix Size` から変更できます。</p><p>発散したときは以下のパラメータを順番に下げてみてください。</p><ul style="text-align: left;"><li>FDN -> Cross Feedback Decay</li><li>Comb -> Feedback Decay</li><li>Comb -> Delay</li><li>Comb -> Cut Modulation Rise/Fall<br /></li></ul>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-22503263014333093972023-08-04T19:06:00.005+09:002023-08-09T10:15:39.919+09:00FMGlassyPad<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/PwZWiLgz8Lk" width="320" youtube-src-id="PwZWiLgz8Lk"></iframe></div><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/FMGlassyPad/synth.html">Try FMGlassyPad (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>FMGlassyPad is an ordinary FM synthesizer specifically tailored for glassy pad sounds.</p><p>Same sound can be made from any FM synthesizers with unison. Corresponding <a href="https://gist.github.com/bryc/e997954473940ad97a825da4e7a496fa">DX7 algorithm</a> (connection of oscillators) are number 5 or 6. I first created the recipe on Sytrus, then ported it as a web synthesizer.</p><p>The character is similar to additive synthesizer. It's easy to make dense tone cluster of sine waves.</p><p>Reverb acts like a pitch shifter. To remove low frequencies, set "Reverb → Mix" to minimum value.</p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/FMGlassyPad/synth.html">FMGlassyPad を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>FMGlassyPad はガラスのような高くて澄んだ質感の音が出るようにチューニングした FM シンセサイザです。</p><p>ユニゾンつきの FM シンセサイザであれば、どれでも FMGlassyPad と同じ音を出すことができます。オシレータの接続は <a href="https://gist.github.com/bryc/e997954473940ad97a825da4e7a496fa">DX7 のアルゴリズム</a>で言うと 5 あるいは 6 です。元は Sytrus で作ったレシピですが、曲ごとに調整する手間を省くために Web シンセへと移植しました。</p><p>音は加算合成に近いです。密度の高いサイン波のトーンクラスターを簡単に作れます。</p><p>"Reverb" は実質ピッチシフターとして動作します。低音が不要なら "Reverb → Mix" を最小に設定してください。</p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-66931293275651298852023-07-29T10:21:00.001+09:002023-07-29T10:21:45.220+09:00TechnoSnare<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/iDKTiVC12XY" width="320" youtube-src-id="iDKTiVC12XY"></iframe></div> <p></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/TechnoSnare/synth.html">Try TechnoSnare (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>TechnoSnare is a web synthesizer that resembles snare drums of old rhythm machines.</p><p>That said, default randomization doesn't sound like a snare drum. To increase the chance to get a snare sound, open menu on the left of Random button, then select Snare1 or Snare2.<br /></p><p>I was trying to synthesize <a href="https://www.youtube.com/watch?v=nKXKHXNxz24">Weddell seal</a> "ugh" noise, and one of the tuning sounded like 909 snare. Then I gathered all the half baked components and put them into this web synth.<br /></p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/TechnoSnare/synth.html">TechnoSnare を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>TechnoSnare は古いリズムマシンのようなスネアドラムの音が出るシンセサイザです。</p><p>... というのは建前で、適当にランダマイズするとスネアドラムの音は出ません。 Random ボタンの左にあるメニューから Snare1 か Snare2 を選ぶとスネアドラムのような音になる確率が上がります。</p><p><a href="https://www.youtube.com/watch?v=nKXKHXNxz24">ウェッデルアザラシ</a>の「うっ」という声を合成していたときに、チューニングの一つが TR-909 のスネアのように聞こえました。そこからアザラシをそっちのけにして作ったのが、このシンセサイザです。</p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-65990847688097411272023-07-22T21:23:00.003+09:002023-07-23T19:32:44.673+09:00GrowlSynth Plugin β<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdg57TFxNlfcNUtJmwNHo80AUxRKAZCItljEas2Q_QzurA6ZgK-sp79iLPn69MU5-Ztd7mk6d2zt2q8JZnXIpiNSSNJO2ltphWN9kGDv1pauTaiFC1VzeOkiGVYjHa5pJU87Uf7m0ZjhuebHJb4xgl9MSvaQAetonL_mles4zjjbRz9MxmBKLBTPBrToQ/s725/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-22%20212216.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="570" data-original-width="725" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdg57TFxNlfcNUtJmwNHo80AUxRKAZCItljEas2Q_QzurA6ZgK-sp79iLPn69MU5-Ztd7mk6d2zt2q8JZnXIpiNSSNJO2ltphWN9kGDv1pauTaiFC1VzeOkiGVYjHa5pJU87Uf7m0ZjhuebHJb4xgl9MSvaQAetonL_mles4zjjbRz9MxmBKLBTPBrToQ/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-22%20212216.png" width="320" /></a></div><p><a href="https://github.com/ryukau/VSTPlugins/discussions/40">Download GrowlSynth β (github.com)</a></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/GrowlSynth/synth.html">GrowlSynth</a> is now ported to VST 3 plugin. More information is available on the link above.</p><p>2023-07-23: GrowlSynth is now updated to version 0.0.1. CPU load is slightly improved, and "AM Amount" parameter scaling is fixed.<br /></p><p>---</p><p><a href="https://github.com/ryukau/VSTPlugins/discussions/40">GrowlSynth β をダウンロード (github.com)</a></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/GrowlSynth/synth.html">GrowlSynth</a> を VST 3 プラグインに移植しました。詳細は上のリンク先に掲載しています。 </p><p>2023-07-23: バージョン 0.0.1 にアップデートしました。 CPU 負荷がやや改善され、 "AM Amount" のスケーリングが修正されました。<br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-21878055031408190972023-07-18T19:45:00.003+09:002023-07-18T23:05:47.411+09:00IntegerArpeggio<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiahzkAMRnSaCbDbUWiRhtU9akzl940SP4MBmv-8oBgHkhYjtApgorLFi1KcrWDOUoP59PbpFwnyOUd_DN3qRs01ZpU8Ljtam8Raztm7_jS1QVh61-gURSkHjWBX43tZ1i7KcfV2O6C4kMUMByz2JimMUSK_OI512Ws7QexqdTvQ0MFHZ3pXUBFyDGi20U/s1018/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-18%20194324.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="744" data-original-width="1018" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiahzkAMRnSaCbDbUWiRhtU9akzl940SP4MBmv-8oBgHkhYjtApgorLFi1KcrWDOUoP59PbpFwnyOUd_DN3qRs01ZpU8Ljtam8Raztm7_jS1QVh61-gURSkHjWBX43tZ1i7KcfV2O6C4kMUMByz2JimMUSK_OI512Ws7QexqdTvQ0MFHZ3pXUBFyDGi20U/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-18%20194324.png" width="320" /></a> <br /></div><p></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/IntegerArpeggio/synth.html">Try IntegerArpeggio (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a><br /><br />IntegerArpeggio is a synthesizer to render arpeggio. The arpeggio follows a musical scale which makes the period of oscillator to always be integer samples. It sounds more akin to just intonation rather than 12 equal temperament, especially at higher frequencies.</p><p>It's intended to be used with external slicer, for example <a href="https://www.image-line.com/fl-studio-learning/fl-studio-online-manual/html/plugins/Slicex.htm">slicex</a> in FL. Start of each note is written in <a href="https://web.archive.org/web/20230108120912/https://sites.google.com/site/musicgapi/technical-documents/wav-file-format#cue">cue chunk</a> of WAVE file, however it's not confirmed to work. It seems like FL Studio v21.0.3 doesn't support multiple cue or <a href="https://web.archive.org/web/20230108120912/https://sites.google.com/site/musicgapi/technical-documents/wav-file-format#smpl">smpl</a> point.</p><p>The idea is based on the observation that integer-sample periodic waveforms do not appear to be aliased when looking at the spectrum. In this case, aliasing isn't disappeared, but the aliased frequencies exactly overlaps to the original non-zero frequency. so it is not perceived as noise for human ears.</p><p>2023-07-18: Changed description about aliasing. I found that initial description was wrong with experiment.<br /></p><p>---<br /><br /><a href="https://ryukau.github.io/UhhyouWebSynthesizers/IntegerArpeggio/synth.html">IntegerArpeggio を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>IntegerArpeggio はオシレータの周期が整数のサンプル数となる音楽スケールに沿ってアルペジオを生成するシンセサイザです。高い周波数では 12 平均律よりも純正律に近い音程が得られます。</p><p>出力を <a href="https://www.image-line.com/fl-studio-learning/fl-studio-online-manual/html/plugins/Slicex.htm">slicex</a> のようなスライサに読み込んで使うことを想定しています。WAVE の <a href="https://web.archive.org/web/20230108120912/https://sites.google.com/site/musicgapi/technical-documents/wav-file-format#cue">cue チャンク</a>で各音程の開始位置を指定しているはずですが、 FL Studio v21.0.3 では複数の cue あるいは <a href="https://web.archive.org/web/20230108120912/https://sites.google.com/site/musicgapi/technical-documents/wav-file-format#smpl">smpl</a> ポイントがサポートされていないようなので動作確認はできていません。</p><p>アイデアとしては整数サンプルの周期波形は周波数成分を見てもエイリアシングが起きていないように見えるという観察に基づいています。実際にはエイリアシングは起こっているのですが、折り返してきた周波数成分が元の 0 でない周波数成分とちょうど重なるので、耳で聞き取れるようなノイズとはなりません。</p><p>2023-07-18: エイリアシングに関する記述を変更。実験して確認したところ間違いがあった。</p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-33310744427372441102023-07-12T18:41:00.000+09:002023-07-12T18:41:02.899+09:00FMTechnoBass<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmgygb0pgWM39y2TYZRKX6IpvERV9REF2r4seS-LdpkBfuk3J0j-We3sMQyVon0HCA2RpMy7wRzeAjNqwma69md_dsDKYu94JxeldLDd0VItnUAEv9DQOdKBTeH7CjXP1X01GTsuxKJ9AH31NtJ-Ky35k7JTfzVZX4D5nmaVyqaKYuEAHokwhLnjqTYb8/s1004/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-12%20184029.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="909" data-original-width="1004" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmgygb0pgWM39y2TYZRKX6IpvERV9REF2r4seS-LdpkBfuk3J0j-We3sMQyVon0HCA2RpMy7wRzeAjNqwma69md_dsDKYu94JxeldLDd0VItnUAEv9DQOdKBTeH7CjXP1X01GTsuxKJ9AH31NtJ-Ky35k7JTfzVZX4D5nmaVyqaKYuEAHokwhLnjqTYb8/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-12%20184029.png" width="320" /></a></div><p></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/oldsynth/FMTechnoBass/index.html">Try FMTechnoBass (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>FMTechnoBass is an ordinary FM synthesizer. Sytrus can make almost same sounds, but it felt tedious to set envelopes for every time. So I made this to save time.</p><p>This one was made long time ago, but abandoned for a while because the sound wasn't interesting. FM algorithm is serially connected 3 operators. Pitch LFO is available to add some low frequencies.<br /></p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/oldsynth/FMTechnoBass/index.html">FMTechnoBass を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>FMTechnoBass はごく普通の FM シンセサイザです。 Sytrus で同じような音が出ますが、毎回エンベロープを設定するのが手間だったので作りました。</p><p>かなり前に作ったのですが、面白い音が出なかったので放置していました。FM アルゴリズムは 3 オペレータ直列で、低い周波数成分を足すためにピッチに緩やかな LFO をかけることができます。</p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-15214945788789360932023-07-10T23:08:00.002+09:002023-07-11T06:26:29.998+09:00GlitchSprinkler<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXgyguaMwK8z0bzNhXCvnv2QhfbSR0692OXUJpt2lF80wr66iIT1Y0L0Syoms1osJucvpfmsbYcgrp14p8-3xHvQhSiZegB0A6fuuybC0sZFSts-T22rk8V2_0rLeoRjYmKQroNU251Hj-G5mwj_C6KvnLF2N2rxQXuftnNDrHi6HmcP5Ev99TiHHuJB8/s926/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-10%20222743.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="881" data-original-width="926" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXgyguaMwK8z0bzNhXCvnv2QhfbSR0692OXUJpt2lF80wr66iIT1Y0L0Syoms1osJucvpfmsbYcgrp14p8-3xHvQhSiZegB0A6fuuybC0sZFSts-T22rk8V2_0rLeoRjYmKQroNU251Hj-G5mwj_C6KvnLF2N2rxQXuftnNDrHi6HmcP5Ev99TiHHuJB8/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-10%20222743.png" width="320" /></a></div><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/GlitchSprinkler/synth.html">Try GlitchSprinkler (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>GlitchSprinkler is an usual synthesizer with oscillator and arpeggiator.</p><p>Oscillator is using polynomial approximation to generate waveform. The approximation only tries to cross the control points on top right canvas. That's why the waveform slithers. Also polynomial approximation only works for smooth functions, which means that it can't approximate sharp edges.</p><p>Arpeggiator is using overtone series to make variation for detune, as following.</p><ol style="text-align: left;"><li>List all the prime numbers up to `2^(Pitch Variation)`.</li><li>Convert the prime numbers into octave and take float modulo of 1, which is `fmod(log2(prime), 1.0)`.</li><li>Add a variation if wrapped octave falls into a scale by computing `abs(octave - pitchInScale) < (Pitch Drift) / 2400`. </li></ol><p>I'm not sure if this makes audible difference. Probably it's too subtle to distinguish from random detune.<br /></p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/GlitchSprinkler/synth.html">GlitchSprinkler を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>GlitchSprinkler はオシレータとアルペジエータを備えたよくあるシンセサイザです。</p><p>オシレータは波形の生成に多項式近似を用いています。ここでの近似は、右上のキャンバスに表示されている制御点を通過する以外の制約を与えていません。なので、制御点を動かすと波形がくねります。また多項式近似は滑らかな関数しか近似できないので鋭い角は表現できません。</p><p>アルペジエータは倍音列からデチューンのバリエーションを生成しています。以下は手順です。</p><ol style="text-align: left;"><li>`2^(Pitch Variation)` までの素数をリスト。</li><li>得られた素数をオクターブに変換して小数部のみを取り出す。 `fmod(log2(prime), 1.0)` 。</li><li>得られたオクターブの値がスケール内のいずれかのピッチに近ければバリエーションに追加。 `abs(octave - pitchInScale) < (Pitch Drift) / 2400` 。</li></ol><p>耳でわかるような質感の差が出るかどうかはわかりません。ランダムにデチューンした音と区別がつかない気がします。<br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-15870724127944823742023-07-08T13:17:00.000+09:002023-07-08T13:17:00.568+09:00MetalSqueak<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL_NA3goENHgYa-orsWilkjAiqJ3NIgU6ocfQH_DTT26sTtHYMwEqCBr0myDX-bbKyvzLOk62Lx0mh73e-xhSAckiiijD50c73F_I_x3jEho87zU36kcPHW7MLhz_9v-8d4yK5HM42XxHwxxw8XkuvoGYscK5_kVeJCcktFHKr67QVQadsbAXccwNuWUI/s942/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-08%20123154.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="942" data-original-width="938" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL_NA3goENHgYa-orsWilkjAiqJ3NIgU6ocfQH_DTT26sTtHYMwEqCBr0myDX-bbKyvzLOk62Lx0mh73e-xhSAckiiijD50c73F_I_x3jEho87zU36kcPHW7MLhz_9v-8d4yK5HM42XxHwxxw8XkuvoGYscK5_kVeJCcktFHKr67QVQadsbAXccwNuWUI/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-08%20123154.png" width="319" /></a></div><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/MetalSqueak/synth.html">Try MetalSqueak (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a><br /></p><p>MetalSqueak is a synthesizer which can make metal squeak sound. The squeaking comes from modulated all-pass filter on the feedback paths of FDN (feedback delay network).</p><p>This is yet another cymbal synthesizer. However, it's less CPU intensive than <a href="https://ryukau.github.io/UhhyouWebSynthesizers/ClangCymbal/synth.html">ClangCymbal</a>, more stable than <a href="https://ryukau.github.io/UhhyouWebSynthesizers/oldsynth/FDNCymbal/index.html">FDNCymbal</a> and <a href="https://ryukau.github.io/UhhyouWebSynthesizers/oldsynth/KSCymbal/index.html">KSCymbal</a>, and easier to make cymbal sounds than <a href="https://ryukau.github.io/UhhyouWebSynthesizers/SerialCombCymbal/synth.html">SerialCombCymbal</a>.<br /></p><p>Internal is serially connected 4*4 FDN. 2 cascaded FDN is sufficient for cymbal sound. Number of cascade can be changed from `Delay->Quantity`.<br /></p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/MetalSqueak/synth.html">MetalSqueak を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>MetalSqueak は軋むような金属音が出るシンセサイザです。軋みは FDN (feedback delay network) のフィードバック経路に位置するオールパスフィルタのカットオフ周波数が内部の信号の振幅に応じて変調されることで生じています。 </p><p>また新しいシンバルシンセですが、 <a href="https://ryukau.github.io/UhhyouWebSynthesizers/ClangCymbal/synth.html">ClangCymbal</a> よりも軽く、 <a href="https://ryukau.github.io/UhhyouWebSynthesizers/oldsynth/FDNCymbal/index.html">FDNCymbal</a> や <a href="https://ryukau.github.io/UhhyouWebSynthesizers/oldsynth/KSCymbal/index.html">KSCymbal</a> よりも安定しており、 <a href="https://ryukau.github.io/UhhyouWebSynthesizers/SerialCombCymbal/synth.html">SerialCombCymbal</a> よりも簡単にシンバルのような質感が出せます。</p><p>内部では行列の大きさが 4 の FDN を直列につないでいます。シンバルであれば FDN を 2 つ直列につなげば十分なのでかなり軽量です。直列接続数は `Delay->Quantity` から変更できます。<br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-1595778230423608902023-07-03T22:43:00.002+09:002023-07-06T18:46:10.482+09:00GrowlSynth<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbvqOriY9bByv4oPIrpodh-RMdpKN7L-33Lx5RnhcOqzQsTEsC_wNyseXeRlPFZGenq0vSpKxxVo9Spuvx372j8X0AJoeaUYmIxEQ6jfxZLbxxvmXjYzy-kiAZVrk8ER6QVC77BZbD9P4-9kTWf7m-gaojA_yZpDnfH5IEBgcEKnDoWTJUIfXF4meujVk/s1422/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-03%20224108.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="722" data-original-width="1422" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbvqOriY9bByv4oPIrpodh-RMdpKN7L-33Lx5RnhcOqzQsTEsC_wNyseXeRlPFZGenq0vSpKxxVo9Spuvx372j8X0AJoeaUYmIxEQ6jfxZLbxxvmXjYzy-kiAZVrk8ER6QVC77BZbD9P4-9kTWf7m-gaojA_yZpDnfH5IEBgcEKnDoWTJUIfXF4meujVk/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-07-03%20224108.png" width="320" /></a></div><p></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/GrowlSynth/synth.html">Try GrowlSynth (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">Read Source Code (github.com)</a></p><p>GrowlSynth is a synthesizer that resembles animal growl.</p><p>Internal is similar to vocal tract model. Most of the development time was spent on oscillator to resemble glottis. Vocal tract part is just some feedback comb filters (short delays). The synth has 3 oscillators that are noise generator, granular synth, and BLIT + formant filter. Original intention was to make successor of <a href="https://ryukau.github.io/UhhyouWebSynthesizers/oldsynth/Pluck/index.html">Pluck</a> with adding all-pass filter on feedback path. However, the synth became totally different thing after some trial and error.</p><p>Edited on 2023-07-04: I noticed that sine sweep of accumulative AM is adding some tones that's not suitable for animal growl. Sound becomes a bit more plausible by increasing oversampling ratio.<br /></p><p>---</p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/GrowlSynth/synth.html">GrowlSynth を試す (github.io)</a><br /><a href="https://github.com/ryukau/UhhyouWebSynthesizers">ソースコードを読む (github.com)</a></p><p>GrowlSynth は動物のうなり声のような音を出すことができるシンセサイザです。</p><p>中身は声道・声帯モデルに似た構造になっています。声帯にあたるオシレータには力を入れましたが、声道にあたる部分は単純なフィードバックコムフィルタ(ディレイ)です。オシレータはノイズ、グラニュラーシンセ、 BLIT + フォルマントフィルタの 3 つを混ぜることができます。元は <a href="https://ryukau.github.io/UhhyouWebSynthesizers/oldsynth/Pluck/index.html">Pluck</a> のフィードバック経路にオールパスフィルタを挟んで Pluck2 とするつもりだったのですが、音がいまいちだったので色々と試しているうちに脱線しました。</p><p>2023-07-04 追記: オーバーサンプリング比を上げると AM によるトーンが目立たなくなります。</p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-75268053508777334642023-06-29T22:56:00.003+09:002023-06-30T08:42:06.212+09:00Slope Filter<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDWxO4wsz_J1cfTt3N3cF-fzOS63YODkga3Zg8neoiHgdXLy6vMqziZ9ylO3LHT0rMNm_Lo64upGewyS8wx3TBC28GdMcYlXK1PWXncHD5Yay9DlZmIBtEm7e_6aDdKef562jjXjv1CVydaM1HwqxV0n489AEmOCLP59TduWZUA6KBTFtzUzeDdhC2GDw/s661/Figure_1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="358" data-original-width="661" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDWxO4wsz_J1cfTt3N3cF-fzOS63YODkga3Zg8neoiHgdXLy6vMqziZ9ylO3LHT0rMNm_Lo64upGewyS8wx3TBC28GdMcYlXK1PWXncHD5Yay9DlZmIBtEm7e_6aDdKef562jjXjv1CVydaM1HwqxV0n489AEmOCLP59TduWZUA6KBTFtzUzeDdhC2GDw/s320/Figure_1.png" width="320" /></a></div><p></p><p><a href="https://github.com/ryukau/UhhyouPluginsJuce/discussions/1">Download Slope Filter (github.com)<br /></a><a href="https://github.com/ryukau/UhhyouPluginsJuce/blob/main/SlopeFilter/dsp/filter.hpp">Read Source Code (github.com)</a></p><p>Slope Filter is a filter to approximate arbitrary slope in decibel per octave (dB/oct). Perhaps useful to change the overall brightness of sound.<br /></p><p>Internal is a cascade of high-shelf filters. Cutoff is set to `f_c * 2^n`, where n is index of cascade, and f_c is cutoff frequency. Slope Filter is using <a href="https://vicanek.de/articles/ShelvingFits.pdf">matched 1-pole high-shelf</a>, but <a href="https://www.w3.org/TR/audio-eq-cookbook/">RBJ high-shelf</a> also can be used with `Q=1/sqrt(2)`. In case of RBJ, it's possible to reduce the number of filters 1/2, 1/3, and so on, by changing cutoff interval to `f_c * 4^n`, `f_c * 6^n`, and so on. However, accuracy decreases as the number of filters decreases.</p><p>I also tried to turn this IIR cascade into linear phase using the method of <a href="https://vicanek.de/articles/ReverseIIR.pdf">"A New Reverse IIR Filtering Algorithm"</a>, but it didn't work. It's probably better to use bidirectional filtering to get impulse response, then convolve it.<br /></p><p>Image is example gain response of -1 dB/oct.<br /></p><p>-</p><p><a href="https://github.com/ryukau/UhhyouPluginsJuce/discussions/1">Slope Filte をダウンロード (github.com)</a><br /><a href="https://github.com/ryukau/UhhyouPluginsJuce/blob/main/SlopeFilter/dsp/filter.hpp">ソースコードを読む (github.com)</a></p><p>Slope Filter は任意の dB/oct の傾きを近似するフィルタです。音の明るさを変更するときに使えるかもしれません。</p><p>中身は直列に接続したハイシェルフフィルタで、各段のカットオフ周波数を 1 倍, 2 倍, 4 倍, 8 倍, ... と設定しています。式にまとめると `f_c * 2^n` で n は直列接続されたフィルタのインデックス、 f_c はカットオフ周波数です。 Slope Filter では<a href="https://vicanek.de/articles/ShelvingFits.pdf">整合 1 次ハイシェルフ</a>を使っていますが <a href="https://www.w3.org/TR/audio-eq-cookbook/">RBJ のハイシェルフ</a>でも `Q=1/sqrt(2)` とすれば、ほぼ同じことができます。 RBJ のハイシェルフでは Q を調整しつつフィルタの数を 1/2, 1/3, ... と減らすこともできます。このときカットオフ周波数の間隔は `f_c * 4^n`, `f_c * 6^n`, ... となります。ただしフィルタの数が減っただけ近似の精度も落ちます。</p><p>この IIR フィルタを <a href="https://vicanek.de/articles/ReverseIIR.pdf">"A New Reverse IIR Filtering Algorithm"</a> の手法を使って線形位相にしようと試みたのですが、うまく動きませんでした。おそらく、双方向フィルタリングを使用してインパルス応答を取得し、それを畳み込む方が良いでしょう。</p><p>画像は -1 dB/oct の傾きのあるゲイン応答の例です。<br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-67521142207078160772023-06-27T19:49:00.003+09:002023-06-27T22:19:10.591+09:00MaybeCabinetIR<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwQKSAbiRm6hNJ2FhjTkqYUhd0JLXfb2h096XE-Y7bPgNaoy3sm9CgwmPhSvQZv8KAfRSmnsz8gtDrxI-zngkxTsOB2T8bDWFktf4STz7IALAYUnYQ-zqGi9qy1JG4k69k98uThLkhazF4dgXNtqnTQa6JjatTxUHQ8Xz1Bdju9ffbvUh1viqUSEJ85S8/s1341/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-27%20185256.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="809" data-original-width="1341" height="193" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwQKSAbiRm6hNJ2FhjTkqYUhd0JLXfb2h096XE-Y7bPgNaoy3sm9CgwmPhSvQZv8KAfRSmnsz8gtDrxI-zngkxTsOB2T8bDWFktf4STz7IALAYUnYQ-zqGi9qy1JG4k69k98uThLkhazF4dgXNtqnTQa6JjatTxUHQ8Xz1Bdju9ffbvUh1viqUSEJ85S8/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-27%20185256.png" width="320" /></a></div><p></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/MaybeCabinetIR/synth.html">Try MaybeCabinetIR (github.io) </a><br /><a href="https://ryukau.github.io/UhhyouWebSynthesizers/">See list of other web synthesizers (github.io)</a></p><p>MaybeCabinetIR is impulse response (IR) generator which resembles guitar cabinets.</p><p>The sound is a bit too clean, but it works okay. When `Source -> LP Q` is high, strange delays are added to IR. Maybe this can be used for another reverb IR generator.<br /><br />At start, I analyzed several cabinet IRs and came up with the recipe below:</p><ul style="text-align: left;"><li>Peaking at 100 to 200 Hz, around +20 dB. Broad Q.</li><li>Peaking at 1000 to 3000 Hz, +10 to +20 dB. Less broad Q.</li><li>(Optional) Negative peaking or notch at 500 to 1000 Hz. Narrow Q.<br /></li></ul><p>Character is mostly decided by the ratio between lower and higher peak.<br /></p><p>IR is generated by following steps:</p><ol style="text-align: left;"><li>Generate random noise.</li><li>Apply low-pass bidirectionally.<br /></li><li>Apply inverse FFT.</li><li>Rotate half to move peak into center</li><li>Apply peaking filters bidirectionally. <br /></li><li>Transform 5 into minimum phase FIR.</li><li>Apply highpass and lowpass to remove direct current and Nyquist frequency.</li><li>Normalize amplitude.</li></ol><p>The recipe is used at step 5. <a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.filtfilt.html#scipy.signal.filtfilt">Bidirectional filtering</a> is a technique to apply IIR filter as linear phase. It can only work on offline (or non real-time) processing as all the signal has to be known beforehand. Minimum phase algorithm is ported from <a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.minimum_phase.html">`scipy.signal.minimum_phase`</a>.</p><p>--- <br /></p><p><a href="https://ryukau.github.io/UhhyouWebSynthesizers/MaybeCabinetIR/synth.html">MaybeCabinetFIR を試す (github.io)</a><br /><a href="https://ryukau.github.io/UhhyouWebSynthesizers/">Web シンセサイザの一覧を見る (github.io)</a></p><p>MaybeCabinetIR はギターキャビネットに似せたインパルス応答 (IR) の Web シンセです。<br /><br />クリーンすぎる感じもしますが、それなりに使えます。 `Source -> LP Q` の値が大きいとき変なディレイが現れます。また別のリバーブ IR 合成器へと応用できそうです。<br /><br />制作にあたっては、いくつかキャビネット IR を分析して以下のレシピにたどり着きました。<br /></p><ul style="text-align: left;"><li>ピーキング、 100 ~ 200 Hz, +20 dB 付近。広めの Q 。</li><li>ピーキング、 1000 ~ 3000 Hz, +10 ~ +20 dB。やや狭めた Q 。</li><li>(任意) 負のピーキングかノッチ、 500 ~ 1000 Hz。狭い Q 。</li></ul><p>音のキャラクターは高低のピーキングのゲイン差で決まります。<br /><br />IR は以下の手順で合成しています。<br /></p><ol style="text-align: left;"><li>ランダムなノイズを生成。</li><li>双方向にローパスを適用。</li><li>逆 FFT 。</li><li>ピークを中央に動かすように半分回転。</li><li>双方向にピーキングを適用。</li><li>最小位相 (minimum phase) FIR に変換。</li><li>ローパスとハイパスで直流とナイキスト周波数を除去。</li><li>振幅の正規化。</li></ol><p>先のレシピはステップ 5 で適用されます。<a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.filtfilt.html#scipy.signal.filtfilt">双方向フィルタリング</a>は IIR フィルタを線形位相を保ったままかけるテクニックです。事前に信号がすべて分かっている必要があるのでオフライン (あるいは非リアルタイム) 処理でなければ使えません。最小位相に変換するアルゴリズムは <a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.minimum_phase.html">`scipy.signal.minimum_phase`</a> から移植しました。 <br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-10091398357523060982023-06-26T11:12:00.001+09:002023-06-26T11:12:38.002+09:001 次ローパスのバイリニア変換<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeS7GH0iG8MYVeFMlz7qg4-HqViWb08YDTW0GyOsAOlcqFKPDmW11q191fadY3MT2uqXpiwrnYQOnuwDTzxMt2qh4LaQX9nke7hmWQV_bAWJL-wNe-y62oJIgsuVpmeq1EcvWjZcUdspb3m1UZSAxv-qQ06NQGFJUOoOB5kiEVKBZk7Z6dj-3SzaOkQ5s/s790/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-26%20111202.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="571" data-original-width="790" height="231" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeS7GH0iG8MYVeFMlz7qg4-HqViWb08YDTW0GyOsAOlcqFKPDmW11q191fadY3MT2uqXpiwrnYQOnuwDTzxMt2qh4LaQX9nke7hmWQV_bAWJL-wNe-y62oJIgsuVpmeq1EcvWjZcUdspb3m1UZSAxv-qQ06NQGFJUOoOB5kiEVKBZk7Z6dj-3SzaOkQ5s/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-26%20111202.png" width="320" /></a></div><p><a href="https://ryukau.github.io/filter_notes/one_pole_lowpass/one_pole_lowpass.html">1 次ローパスのバイリニア変換を読む (github.io)</a></p><p>EasyOverdrive の適当にノイズを混ぜたピークホールドのエイリアシングの低減策として、ナイキスト周波数のゲインを 0 にした 1 次ローパスが使えるのではないかと思い調べました。</p><p>実装してからもう一度考え直したところ、後段のスムーシングに使っている 2 次ローパスがバイリニア変換してあるので特に意味がないことに気づきました。今回考えていた応用は分数ディレイのかかったインパルスを得ることなので、ラグランジュ補間か PolyBLIT 系のテクニックのほうがアンチエイリアシングに向いている気がします。<br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.comtag:blogger.com,1999:blog-3625740837276868040.post-61345643080598142892023-06-25T12:03:00.002+09:002023-06-25T18:30:42.137+09:00EasyOverdrive<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/-gUCwt1bZuU" width="320" youtube-src-id="-gUCwt1bZuU"></iframe></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyBdTOFycpLALNm8Y0gkfWGusLc5Qq2Wc3b2wpQWRQRcn7o7n4AoxkCBVkQ04Ec6WqF6e_h3z4MGjtJgKHYBcZQA5_AUUtE5tceo0sdLzOPTVF-VMSud82jO7P9w7twUZQieHTaI6Vt2_PF97JuxJ6OycQrSF9KmKPu68M7iiFCiYto_4s89rKEgEr8fw/s660/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-25%20120254.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="553" data-original-width="660" height="268" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyBdTOFycpLALNm8Y0gkfWGusLc5Qq2Wc3b2wpQWRQRcn7o7n4AoxkCBVkQ04Ec6WqF6e_h3z4MGjtJgKHYBcZQA5_AUUtE5tceo0sdLzOPTVF-VMSud82jO7P9w7twUZQieHTaI6Vt2_PF97JuxJ6OycQrSF9KmKPu68M7iiFCiYto_4s89rKEgEr8fw/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-25%20120254.png" width="320" /></a></div><p><a href="https://github.com/ryukau/UhhyouPluginsJuce">Source Code (github.com)</a></p><p><a href="https://github.com/ryukau/UhhyouPluginsJuce/discussions/1">Download (github.com)</a></p><p>EasyOverdrive is an overdrive plugin stemmed from low quality limiter algorithm. JUCE framework is used.<br /></p><p>---</p><p><a href="https://github.com/ryukau/UhhyouPluginsJuce">ソースコード (github.com)</a></p><p><a href="https://github.com/ryukau/UhhyouPluginsJuce/discussions/1">ダウンロード (github.com)</a></p><p>EasyOverdrive は質の悪いリミッターのアルゴリズムをもとにして作ったオーバードライブです。今回は JUCE を使いました。<br /></p>ryukauhttp://www.blogger.com/profile/10533448308424850016noreply@blogger.com