RSS Twitter Facebook
DTM / シンセサイザー / VST / WebMusic 関係の技術情報を発信しています

Products : ユーロラックモジュラー「RedLine」販売中

ユーロラック・モジュラーシンセサイザー「RedLine」を販売開始しました!

ユーロラック「RedLine」



2017/03/23 (2017年03月 のアーカイブ)

WebAudio.Tokyo #4

Twitter Google+ Facebook

既に参加枠は満員のようですが、来週28日(火)に六本木の WebAudio.tokyo でLTやります。
今回のテーマは「軽量GMシンセ webaudio-tinysynth」です。


WebAudio.tokyo #4

Posted by g200kg : 4:33 AM : PermaLink

2017/03/01 (2017年03月 のアーカイブ)

WebAudio API で簡単にノイズを作りたかったのに...

Twitter Google+ Facebook

この間こんな記事を書いたのですが... WebAudio API でノイズを作る小技

FM音源なんかでよく使われる、オシレータに自己フィードバックを掛けてノイズを作る方法なんですが、実はこれ、Chrome と Edge では快調に動くのですが Firefox では動かないのですよ。まあ、WebAudio API もまだまだ枯れたAPIではないし、こういうコーナーケース的な使い方ではよくある事くらいに思っていたのですけどね...

このようにノードの出力から入力ではなくパラメータに接続を戻すような場合の振る舞いについてWeb Audio APIの仕様書ではちゃんと明記されてはいないのだけど、Editor's Draft にあるノードの処理オーダーの説明などからの推察としては、これは「動かない」のが仕様として正しいと判断するのが妥当かな、という結論に至ってしまった。

という事でこの技が胸を張って使えなくなってしまった。これを確実に動作させるにはループ内にDelayNodeが入っていることが必要で、仕様に従うと下の図のような感じになります。出てくる音は基本的に同じなのだけど、簡単にノイズを作るはずなのにノード3つ使うのではうまみがないです。これならバッファに事前にレンダリングしておいて BufferSourceNode を使うほうが良さそう。

あー、残念だ。なお、本来の仕様ではこのような接続をした時点でエラーを吐くべき、となっているので、Firefox では今は音が出ないだけだけどその内エラーを吐いて止まるようになるかも知れません。あー残念だ。

DelayNode入り自己フィードバック

Posted by g200kg : 5:47 PM : PermaLink

2017/02/23 (2017年02月 のアーカイブ)

[Polymer] WebAudio APIで軽量GM対応シンセを作ってみた

Twitter Google+ Facebook

GitHubに置いてあります。
リポジトリ : https://github.com/g200kg/webaudio-tinysynth
デモページはこちら : https://g200kg.github.io/webaudio-tinysynth/soundedit.html

WebAudio APIのGM配列のシンセは以前も作ったことがあるんですけど、大抵はサンプルデータに頼る事になるのでサイズがどうしても大きくなりがちです。組み込みならともかくWebアプリ的にはかなり辛い状況なので、今回はサンプルデータは一切使わずにオシレータの組み合わせでアルゴリズミックにすべての波形を合成しています。という事で数十kB程度のサイズにGM音色セットとサウンドエンジン+MIDIシーケンサーを押し込めています。とは言ってもあまり凝ったことをやると今度はCPUが厳しくなりそうなので微妙なバランスを探っている感じですが。

音色セットは2種類あって切り替えられます。quality=0が1音1オシレータを割り振るモードでチップチューン的な音になります。またquality=1モードでは、1音に2オシレータを割り振ってFMベースでもう少しそれらしい音を作っています。同時発音数はCPUパフォーマンス次第で無制限です。GM音色セットくらいの規模になると1つ1つの音色の作り込み以上に全体のバランスを取るのが大変になってくるのですが、そのあたりは適当にやっているので取りあえずの状態です。

形式としては Polymer のモジュールになっていますので所定のインストールがされれば、HTMLタグ <webaudio-tinysynth> でページに組み込めます。テストページで鍵盤の下にある黒い四角の部分が本体で、このエレメントに対してMIDIメッセージを投げると音が出ます。コードとしては、

synth=document.getElementById("tinysynth");
synth.send([0x90,60,100],audioContext.currentTime);
のような感じになります。またMIDIシーケンサー機能も持っていますので、適当なMIDIファイルをtinysynthにドロップすると再生できます。

※そして問題点とか...

webaudio-tinysynth という名前のPolymerのモジュールで、HTMLタグだけでページに組み込めるようになっているのですが、Firefox / Edge では WebComponents が polyfill になるのでうまく動かなかったりせっかく軽量なのに起動が凄く遅くなったりします。WebAudioAPIとWebComponents polyfill との相性の悪さは前から気になっていたのだけど、ブラウザでネイティブ対応されるまでは実際に何かに使うならやっぱり普通の JS ライブラリにしておいた方が良いんかなぁ... と思わなくもないです。




Posted by g200kg : 5:53 AM : PermaLink

2017/02/17 (2017年02月 のアーカイブ)

WebAudio API でノイズを作る小技

Twitter Google+ Facebook

WebAudio API使ってますか? 今回はノイズの作り方についてちょっと小技の紹介です。

WebAudio APIには今のところホワイトノイズ等を発生するためのノイズジェネレータがありません。以前 GitHub のissueでノイズジェネレータが欲しいというリクエストを上げてみた事があるのですが、概ね好意的ではあったものの将来的な話という事ですぐには実現されなさそうです。

今のところノイズが欲しくなった時にどうやるかと言うとScriptProcessorノードを使ってリアルタイムに乱数で埋めるか、あらかじめ乱数で埋めたBufferを準備しておいてBufferSourceノードで再生する、というのが一般的です。

まあ、それで困る事もそれほど無いんですけどね。もう一つの小技としてこんなやり方があります。

WebAudioDesigner : 自己フィードバックノイズ

見ればわかると思いますが、Oscillatorノード1つとGainノード1つで、自己フィードバックを掛けているだけです。オシレータの現在値で周波数が決定されるループになっていますがパラメータの設定によってカオス挙動が発生してノイズになります。FM音源でノイズを作る時によくやる奴ですね。

純粋な実行時の処理の重さは、BufferSourceの方が軽いかも知れませんが、これならBufferもいらないし ScriptProcessorよりは軽いかなと思います。

ただ例によってFM音源的に予測しづらい挙動によるノイズなので精密なホワイトノイズが欲しい場合等には向いていません。逆にパラメータの選び方によってノイズがホワイトっぽいのやらピンクっぽい(あくまでぽい)感じに変化したり、一様なノイズでもない面白い音が出たりしますので、うまくやれば何かに応用できるかも知れません。

下の例はフィードバック量をゆっくり変化させた例です。

WebAudioDesigner : 自己フィードバックノイズ+LFO

○○ができないなぁと思っても、結構こういう小回りが利くのが WebAudio APIの良い所ですかね。

Posted by g200kg : 8:40 PM : PermaLink

2017/02/10 (2017年02月 のアーカイブ)

難解なDTMクイズ

Twitter Google+ Facebook

数日前、激ムズDTMクイズというのがバズっていたのですが、内容を見るとこれは基本的にDTMをやっていない人向けのようですね。「あーあの人達はこんなわけのわからない言葉を使っているのかー」みたいな。それはそれで良いのですが、実際にDTMをかじった事のある人からすると多分拍子抜けだったようなので、ちょっと本気のDTMクイズを作った所、結構楽しんでいただいてる人がいるようです。

まあ7問しかありませんので、数分の息抜き程度のものですがよろしければどうぞ。

https://t.co/k3gpLoeJSH

と、まあこれはこれとして、ポイントは誰でもクイズページを作れる仕掛けがしてあります。
「クイズを作ってみる?」のリンクを辿るとこんな画面になって問題を編集できます。

作った問題は「URLを作成」ボタンでURL化されますが、情報を全部URL内に押し込めてあって非常に長いのでSNS等では一度 bit.ly 等で圧縮してから使ってください。

Posted by g200kg : 7:44 PM : PermaLink

2017/02/07 (2017年02月 のアーカイブ)

Eurorack Module用ダミーロード

Twitter Google+ Facebook

先日たまたまTwitterで電子負荷の写真をアップするラッシュがあったので、この際私の方で使っている Eurorack システムの電源負荷テスト用の機材の詳細を紹介しておきます。

Eurorackシステムの電源は ±12Vと+5Vの3系統ありますのでちょっと厄介なんですが、基本構成は下の図のような感じでそれぞれ独立に負荷がかけられるようになっています。そして、電源モジュールの負荷テストだけではなくて電源とターゲットモジュールの間にはさんでモジュール側の電流チェックにも使えるようになっています。

この時、電圧/電流計にはデジタルパネルメータを使いたいのですが、実はこれが問題で、電圧電流同時表示できるパネルメータって大体こういう構造なんですよね。

つまり負荷のマイナス側にシャントが入っている、いわゆるローサイド検出になっています。これだと+12V/+5V側に使えません。と言う事でパネルメータの改造という暴挙に出ます。


パネルメータ内部のシャント抵抗を破壊するとマイナス側基準の単なる電圧計になるので、外部にプラス側にシャントを入れたハイサイド電流検出回路を作って無理やり電圧を送り込みます。


回路はこんな感じ。ハイサイド検出に使っているオペアンプは電源レベルまできっちり動く奴でないと駄目です。シャントは0.1Ωでちょっとでかすぎ。パネルメータ側の電流計測入力の感度は元のシャント抵抗次第で不明なのですが、かなりの高感度と想像されるのでセンスアンプでの増幅は押さえてあります。シャントを数十mΩくらいにしてセンスアンプでちょっと増幅するくらいの方が良いけど作っちゃったものはしょうがない。"PANEL METER (MODIFIED)" となっているのがシャント抵抗を外したパネルメータです。-12V系はグランド側を-12Vに繋けばそのまま使えます。各系統の内、電源側で死んでる奴がいても他の系統は動くように一応気を使っています。右上の方にあるのは温度が上がった時にファンを回す部分です。


という事で出来が良いという訳でもないのですが、基板はこんな感じになっています。何が駄目って組み立てるとパネルメータとかが邪魔して較正用のVRにアクセスできない所がホントに駄目。パネルに穴開けて回せるようにしておくべきだった。でも1台あれば十分なものだしわざわざ基板を起こし直す気にもならんのだよな。

やっぱり較正は面倒だからねえ。本来はどうするべきかなぁ、わざわざ電流検出を外部に作らず、パネルメータを電圧電流計じゃなくて独立した電流計にして電源周りをDC/DCで絶縁するというのが正攻法だと思います。外部に検出回路作るにしてもハイサイド電流センス専用の石を使えばもう少し簡単になります。あるいは、外部モジュールの電流チェックなんてやらずに電源の負荷テスト機能だけにすればそもそもこんなややこしい事にはならないのだけどね。

ただ、できてみれば使い勝手としてはなかなか優秀です。電源いじるにしてもモジュール側をいじるにしてもこいつを繋いでおくだけで結構捗ります。

Posted by g200kg : 3:45 PM : PermaLink

2017/02/04 (2017年02月 のアーカイブ)

Modular Wonderland 3 @宮路楽器

Twitter Google+ Facebook

2017年2月4日、宮路楽器神田店でやっていた Modular Wonderland 3 というイベントをのぞいてきました。取りあえず機材の写真だけ。


会場の様子はこんな感じ、宮路楽器神田店2Fの「Zippal Hall」です。

タイムテーブルはこれ

入り口には42HPケースに Pittsburgh GAME SYSTEM と Audio Damage Neuron の組み合わせ

Hyakutake さんのシステム

Takagi さんのシステム。レア機材が見える

kaz さんのシステム。春頃には発売したいという試作品が載っているらしいがどこにあるかわからない

Ipnoteca さんのシステム

Hataken さんのシステム

Takagiさんのシステムで奥に移っている鍵盤はフェンダーのローズピアノベース。32鍵です。60年代初期のかなりレアものでは? それから、左奥はスペースエコーですね。奇しくも数日前からTwitterとかでティッシュボックスになった画像が出回ったりしてるようですがww 古い機材ですがかなり状態が良さそうに見えました。ちゃんとメンテしてる人はしてるんだよな

Posted by g200kg : 11:22 PM : PermaLink

2017/02/01 (2017年02月 のアーカイブ)

HTMLタグ1つでピアノロールが描ける 'webaudio-pianoroll'

Twitter Google+ Facebook

HTMLタグ1つでピアノロールが描ける'webaudio-pianoroll'、[Polymer]を使った webaudio-controls の姉妹品です。ドキュメントの整備がちゃんとできていませんが GitHub に置いてあります。カスタマイズの自由度は高いので結構色々使えると思います。

* 4種類の編集モード("gridmono", "gridpoly", "dragmono", "dragpoly")
* 色変更や各部画像の差し替え等のカスタマイズが可能
* MML インターフェース
* AudioContext時間軸での演奏サポート機能

リポジトリ: https://github.com/g200kg/webaudio-pianoroll

ライブデモ: https://g200kg.github.io/webaudio-pianoroll/


Posted by g200kg : 4:30 AM : PermaLink

g200kg