2022年4月18日月曜日

SSG7 V リリース

やっとリリースできました。

といってもKMG7Vを開発し始めたのが2021年11月。

半年くらいでやっとKMG7Vをリリースし、その枠組みがあったので1か月後にSSG7Vリリースということになりました。

この音源作り終えたら、もうやめよやめよといいつつ、何年たったことか。たしか有名なアニメ監督にもおられましたよね、これが最後になるだろうっていいつつ、ずっと出してる人(笑)

僕はもともとプログラマーではなく、作曲がメインなので、そろそろ作曲家に戻るべきなんだろうけど、ついつい音源制作を楽しんでしまう。でも結構体も精神も壊してます。慣れない作業で体を酷使するので頭がイってしまいます。


さて、SSG7Vですが、制作当初はPMG7Vでした。

ではなぜ今SSG7Vなのか。

7はKMGと一緒で7弦ね。VはVSTからとったもの。

では、最初の3文字は?

PMGは「Physical Modeling Guitar」だったのですよ。

いわゆる物理モデル音源ですね。しかし、作っている途中で、物理モデルっていうけど、いったい何をもって物理モデルというのかと疑問に思い、いろいろ調べていくうちに、自分の音源は物理モデルではないことがわかり、PMGの名を捨てました

もちろんSSG7Vではサンプルファイルを使っていません。内部でサンプルもどきを一部作成するものもありますが、95%はリアルタイムに波形が計算編集されながら音が鳴っています。なので、こう見えても安定した同時発音数は、16音くらいしかありません。それ以上鳴らしているとバリバリ鳴り始めます。

話がすっ飛びましたが、物理モデリングというのは、どうも、物理的な計算をして音を出すらしく(説明にになっとらん)、僕が今回作ったのは、実は、ただのシンセサイザーです。

正確には、「Subtractive Synthesis」というみたいです。

減算方式とか減算合成とよばれるものです。

つまり、倍音の多い音、ノコギリ波やホワイトノイズをEQで削って、音を作っていくものです。ここまで説明すると「な~んだたいしたことね~じゃねえか」って思われるかもしれません。そうです、たいしたことないんです。

難しいのは、調整です。

ギターは、アタックから徐々に、倍音が消えていき、EQをセットすれば終わりというわけにはいかないのです。

シンセサイザーでボリュームにエンベロープをかけるように、EQの周波数やゲインにもエンベロープをかけます。それを、0.05秒の世界で処理します。さらに、強い歪をかけるヘヴィメタルを前提とした音源ですので、歪をかけると、倍音が増し、思わぬ音になります。ある周波数をほんの少し上げただけで、歪ませると大きく音が変化します。ですので、ブリッジミュートなどはとても難しかったです。あと、ピッキングノイズが地味に難しかったです。ご想像の通り、単純に鳴らすと、マシンガン効果でダダダダと鳴るだけです。工夫が必要ですので、ここらへんは企業秘密にしておきます。

で、まあ、Subtractive Synthesis Guitarということで、SSGになったわけですよ。

ほんとは物理モデリングを名乗りたかったのですが、あとから、「ちがうじゃ~ん」とかいわれるのは非常に嫌だったし、嘘はつきたくないので、正直にこのようなブログを書きました。(黙ってりゃいいのにネー)

一般的に、なんとなくですが、「サンプルファイルを使わない=物理モデリング」のイメージが結構強いと思います。僕もそう思ってたわけですし。

物理モデリングは、自分で音を作るのが面白そうなわけで、物理モデリングでひとつの楽器を作って、それを利用者が鳴らすというのは、物理計算に何のメリットがあるのかいまいちわからないぼくちゃんです。わざわざ難しい計算させて「はいトランペット。」等ではなくて、難しい計算で自分の好きな音が作れることが、物理モデリングのメリットのような気がします。

てことで、僕は今後物理モデリングは作らないし作れないような気がします。減算方式の方がわかりやすくとても便利で簡単な気がしてます。(←ただアホなだけかも)

考えてみれば枠組みはあったとはいえ、1か月でシンセサイザーを作ったのでそりゃ体調も悪くなるわと。しばらく休んだら、もしかしたらまた何か作るかもしれないし、KMGとSSGのメンテナンスに力を入れるかもしれないし。

とりあえずとても疲れましたよ。ただ、VST制作は面白いですよ。普段購入するものを自分で作れるわけですから。興味のある人は、NETを徘徊して情報を集めてみるといいですよ。何気に僕は、KMG7VとSSG7Vに自分の労働費以外にいくら費やしたかって、JUCE JAPANという本1冊です。C++もほとんどわからなかったけど、ほとんどネットで勉強できましたよと。もちろん、無料で協力してくださったネットの方々にはほんと感謝しております。皆様がいなかったら作れてないです。ホンマ。

てことで、生意気にも完成したVSTを有料販売していますが、よかったら買ってくださいませ。よろしくお願いします。

SSG7V制作の裏話でした。


2022年3月18日金曜日

KMG7 V リリース

やっとVST版KMG7をリリースできました。

もともともう音源制作は引退しようと思っていたのですが、Kontaktに頼らない音源制作にちょっと興味を持ってしまって…。

まずはSteinbergのVST SDKを使って作ろうとしたのですが、あまりにもわからなすぎて中断。そこでJUCEに移動。そしたらJUCEもよくわからなくて中断。またSDKに戻って、とあっちこっち行ったり来たりしてるうちに外国のJUCEのYoutubeを見てずいぶん覚えていきました。

ある一定のラインまで理解すると国内のJUCE先輩方の記事の意味がわかるようになり、さくさく進んでいきました。

最初の難関は、ピッチベンドでした。JUCE純正のサンプラーでは、引数を与えるだけでサンプルピッチが上がる仕組みはなかったのです。ピッチが関係するビブラートも同様です。そこでオワッタと思っていろいろ調べていたら偶然モジュールのなかにPitchRatioとかいう変数を発見。これです。これは、ファイルのサンプルレートと本体のサンプルレートが異なる場合に正しいピッチに修正するパラメーターでした。これの導き方をみると、2の(1/12)乗で半音上がるパラメーターです。つまり、1オクターブ(12半音)で2となるのです。
ソースサンプルレートが96000でゲットサンプルレートが48000だと、2をかけるので、つまり、ピッチを倍にしないと正しく鳴らない、そのままだと1オクターブ低いということですね。ソース48000、ゲット44100だとpitchRatioは1.08843...となり、少しだけピッチを上げてやるということ(で合ってると思います。逆だったらごめんなさい)です。


そこへ変数を運ぶためにstatic変数を使いました。これが後に問題に。というのも、VSTではstaticを使うと同一DLLで共有され読み書きするとバグると。で、面倒くさかったのですが、そこのモジュールまで一個ずつたどって全部の関数に引数をつけていきました。これで変数を運ぶことはできました。


ビブラートはもう一個Ratioを掛け算で置いてやり、そいつを超低周波のサイン波で動かすだけでした。ちなみにここに出てくるaudioPというポインタはstaticではないものの、staticのように使えるもので、voice毎に全て同じ固定アドレスを渡してます。noteOnの度に毎回あっちのaudioPアドレスをこっちのaudioPにもらい、あっちのクラスでもこっちのクラスでも、audioPを使えば、こっちのクラスの共有みたいな変数にアクセスできるようにしています。
考え方としてはたぶん、staticの代わりになる一つのオブジェクトを作っているということでしょうか。そのオブジェクトにみんなでワイワイアクセスしてるわけです。ややこしいですがとにかく正しく動作してくれてます。


次の難関が、最後まで引きずった 、ストリーミング再生です。2.5GBもあるファイルを全部メモリに読み込むと、プラグインはたぶん3Gを超えてしまうのでこれが解決できなければ本当に詰みでした。終わりですよまじで。これはいろんな要素が混じっていて簡単に説明できないのですが、できるだけ短く言うと、最初は音を繋げる手法を取りました。同じサンプルを1秒のAとフルのBにわけ、Aはあらかじめ読み込んでおき、Aをならしている間にBを読み込んで、Aの終了と同時にBに切り替えるものでした。48000分の1秒でもずれるとノイズが入るのでとてもシビアでした。うまく繋げることはできたのですが、その後のいろんな事情でまたノイズが混入することに。

で、違う方法を思い付きました。繋げるのではなくすり替えるのです。Aがなっている間にBの読み込みが完了したらその時にAが参照しているアドレスをBのアドレスに変えてしまうのです。こうすれば、2つは長さが違うだけの同じファイルなので、繋ぎ目の心配はありません。案の定うまくいきました。ただし、AとBの取り扱いを間違えると正しい音がならないので、注意が必要です。画像ではBから直接Aを変更すればいいのでは?と思うかもしれませんが、試しましたが、バグが発生しました。理由はいろいろあるのでしょうが、AからBを取りに行く必要があったのでこういうややこしい方法になりました。ここら辺は企業秘密ということで。あとポインタが三次元配列になってますが、実際はただの1個のポインタです。制作中多次元でテストしていた名残です。


あとは大きな問題はなかったですが、自作VSTとして一番あってはならないことが残ってました。クラッシュです。突然落ちるんです。これは利用者が一気に離れてしまうので最後の最後までチェックしました。完璧ではないかもしれませんが、少なくとも、負荷のかかった状態で操作しても落ちないレベルには作ったつもりです

さて、今後のKMG7Vですが、様子を見ていきながら、余裕があらばエフェクト類を強化したり、サンプルを録音し直したり、コードをならせるようになどと思ってますが、予定にも入っていませんのでまだ期待しないでください。開発費がなくなれば倒産です

ギター音源の世界は10年前と違って飽和してきてるので、もう戦えないかもしれません。でも自分はKMG7Vのソロサウンドは宇宙一くらいに思っています。

みなさんフリー版を使ってみてくださいね。

人気の投稿