ラベル vst の投稿を表示しています。 すべての投稿を表示
ラベル vst の投稿を表示しています。 すべての投稿を表示

2020年6月12日金曜日

FM trial v4.3リリース!!



会社で使う動画を作る為に、
超久しぶりにFMtrialをCUBASEに刺して、
ドラスピのジャングルを弾いて、それを撮影していた。

そしたらその夜、
1年ぶりくらいにFMtrialのバグレポが上がる!!

なにこれ!
この偶然すごない!?

しかも、ドラスピを手で弾いてたら、
モジュレータにベロシティが影響するのが
どうもイイ感じじゃなくて、
最終的にはベロシティを全部127にエディットして
本来の音色にしてた所。

ベロシティで音色に変化が付くのが
他には無いウリかなーと思ってたけど、
手で弾くとなんとなく音色がショボいのよね。
実際に弾いてみて初めてわかるって事ある。

その辺をさしゅさんにバシっと指摘されて度肝抜かれた!!

なにこれ!!
すごい偶然!!
運命的なので何か繋がってる!?

後はピッチがチョイと低いというご指摘。
調べたら本当にちょっと低い!!
笑っちゃった。

これは原因わからず、オフセットをかまして修正。
昔Aを440hzで調律した記憶もあったけど実際違ってるし。

とりあえずv4.3リリースです。

あそうだ、mucalc同梱のFMtrialも変更しないと!

2019年7月5日金曜日

FMtrialv4.2リリース!!

遂にFMtrialも使ってくれる人が現れた!!
これは以前mucalcがナノ的にバズったからだと思われます。

発音時に位相をゼロからスタートさせるスイッチと、ピッチベンド幅を調整できるノブを
新設しました。後はパッチファイルをMyDocumentにセーブするように。以前はdllのある
場所にセーブしてたのだけど、windowsのセキュリティが厳しくなってProgramFiles内は
プログラムからイジれなくなったから。まあこれはしょうがない。

そして、リリースから2年、何の音沙汰も無かったFMtrial、
誰かが使うと思ってなかったので作りっぱなしというか自分用にしか作ってなかったので、
早速webに機能解説を入れてみました。
とりあえずこれを見たらなんとなーくわかるのかしら!?

おススメはmucalcでMDXをループでプレイしながら、FMtrialのパラメータを
ぐいぐいといじるのが楽しいです。
往年の名曲をどんどんぶっ壊して別の曲にしてみよう!

こういうのはコンテンツとして成り立つのかなぁ・・。

2018年1月1日月曜日

Visual studioのバージョンとVST3.6の関係


今日は長い事使ってたVisualStudio2013でVST3.6を作成する場合、
どのSDKのバージョンまでいけるのかを調査してみました。

VSTSDK 3.6.5→作成成功
VSTSDK 3.6.6→作成成功
VSTSDK 3.6.7→作成失敗
VSTSDK 3.6.8→作成失敗

もう少しつっこんで調べた所、3.6.7からC++11のnoexceptなどを使っていて、
(これらは2015からサポートされてるみたい)この辺でエラーが出てビルド
できませんでした・・。

というわけで、Visual Studio2013でVST3.6開発する場合は、3.6.6を使用
する、という事でいけるみたいです。実際にCUBASE8.5に読み込ませたら
出てました。

やり方としては3.6.0系のやり方で、CMAKEを使わない方法でSDK内の
プロジェクトをビルドするみたいです。
3.6.7から方針がガラリと変わったという事ですな。

ちなみに2017をインストールして他の自作アプリをビルドしたら、VST2.4系
のプラグインもちゃんとビルドできたしDxlibもいけたので、後はVSTホスト系
がちゃんとビルドできたらもう2017に移行した方がよさそうですね。機能も
充実してるし。

2017年6月27日火曜日

FMtrialv4.1リリース!!

遂にCUBASE9が32bitプラグインに対応しなくなったのでした。
そこでウチのVSTインストも64bit化が必要なのです。

早速ググって64bitビルドを試みる。

わわわ、結構ビルドエラー出る!!
一つ一つチェックしてみたら、案外シンプルなエラーだったので、
スススと直していくも、png関連のエラーがどうやっても取れない。

「外部シンボルが未解決に~」系のヤツ。

こんなの後で考えたら.libにパスが通ってないってすぐにわかるもんだけど、
その時は64bitのビルドが初めてだったので、これは64bit独特のエラーだ!
なんて思い込み。ソースコードをぐいぐい見続けて、ちんぷんかんぷん地獄へ・・。

ツイッターにその事をふと呟いたら、突然ひらめく。
いや、パス通ってないだけちゃうの、と。

libpngなどを64bitでビルドした後、そこにパスを通したらあっけなくビルド完了。
会社のCUBASE6.5で動作も確認。

いやー、何という事でしょう。
問題ってシンプルな時もあるよね~。
ツイッターで呟いて良かったわ~。

というわけで、FMtrialも遂に64bit化!
誰か使ってくれる人が現れる日は来るのか!!

2017年2月3日金曜日

FMtrial version3.0リリース!!!

いよいよ一区切り、FMtrial version3.0遂にリリースでございます。

遂に4オペレータに対応し、8アルゴリズムガッツリと入ってます。
フィードバックもするし、かなりYM2151に似た音が出ますよ。
ゼヒ使ってみて下さいね。

というわけで、苦労話をここに書きましょう。

まず、エンベロープジェネレータ(EG)が本当に大変だった!!
何となく思いつきで作ったEGも、パラメータによってどんな動きをするかは
シンセの設計者次第という事で、YM2151のイミュを使って

・アタックレート
・ディケイレート
・リリースレート
・サスティンレベル
・サスティンレート

この当たりをパラメータを一つづつ変えてサンプリングして計測、みたいのを
やりましたよ・・。大変だったわ・・。

計測した値を元に計算式を作って、実際にシンセに入れ込んで出力してまた
計測。計測に次ぐ計測。

やっとできたと思って曲を鳴らすとなんか違う。

特にクイーンマリー号の後半部分。

ここはアタックのゆるい音がフワフワと鳴るんだけど、そこが全然違う。

そうだった!!キースケールを全く計算してなかった!!

ということで、キースケールも全部の値で計測。
これが驚愕の造りになってて。
値がリニアでないのよね。なのでノート分全部計測してテーブルを用意。

もう無茶苦茶なやり方だけど、これしかなかった。

だから、実際のYM2151がどう鳴ってるのか全然わかんないけど、
似た感じの音が出るという感じになりました。まあ当初のコンセプト通り
これでいいのでしょう。苦労はソースコードに入ってますのでゼヒ。

そして実際のパラメータを流し込むとそれっぽい音が出るようになったので、
プリセットが必要。

もう何年も前から勉強の為に訪れているVAL-SOUNDの阿保剛さんにメール
でプリセット音としてサイトに乗せている音色データを使わせて欲しいと
連絡した所、すぐにお返事を頂けた!!

超感激!!!

ゼヒ使って下さいとの事!!

めっちゃ嬉しかった!!!

サンプル曲の感想まで頂けて!!大興奮!!!

阿保さん本当にありがとうございました!!

というわけで、プリセットはめちゃ高品質な音が入っています。
音色によってはYM2151にめっちゃ似てたり、またはそうでなかったり。

誰か一人でも使ってくれるといいなぁ~。

2017年1月30日月曜日

VirtualStoreって何だよ!

結局FMtrialでもパッチ地獄に突入!

DLLの存在場所がDLLから判明できるようになったので、

TCHAR   szModuleFileName[_MAX_PATH] = _T("");
GetModuleFileName((HMODULE)hInstance, szModuleFileName, _MAX_PATH);

その場所にパッチデータを保存しといたら色々と楽じゃんということで、
早速そこにパッチを書き込んだり、読み込んだりするコードを書いてみました。

でもWin7くらいからProgramFiles以下は割とユーザやプログラムが読み書きしたら
ダメよウフフ的なルールになってきていたので大丈夫かなーと思いながら実行。

あら、ちゃんとパッチをセーブしたりロードしたりできる!
簡単じゃん!

と思って該当のVSTのある場所を見に行くと、パッチデータは無い。

でも、ちゃんとパッチをセーブしたりロードしたりしてる。

なんだこれ!?

パッチファイル名で検索かけたら、
C:\Users\<ユーザ名>\AppData\Local\VirtualStore\Program Files (x86)\VSTPlugIns

こんなトコにしゅれっとセーブされてる!

なんだこれ!?

調べたら、VirtualStoreという機能らしくて、システム領域をアホプログラムから守る
機能らしいどす。

うーん。

なんだろうこのモヤモヤ感。

「DLLの隣にパッチデータを置いておきたい!」

という野望はどうにもうまくいきませんでした。
もうちょっとゴチャゴチャやってみよう。

2017年1月27日金曜日

FMtrial version2.0リリース!!

遂にオペレータが2つになりました!!
二つになったらそらもうFM変調するしかないでしょうという事で。

早速サンプルを鳴らしてみたので聞いてみてね。

MDXをそのまま鳴らす為に、今回オペレータ3と4を1と2に各パラメータを流し込んで
鳴らしてみました。よってフィードバックは無し。

ドラスピを聴いてわかると思うけど、かなりギョイ~ンといっております。

今回の一番の山場は「テーブル化」!!

毎22マイクロセカンドで計算しないといけないので、イチイチsin()とかlog10()とかexp()
とかでやってるとまあ遅い遅い!!

v1のサイン波でそのまま作ったら、演奏がヨレヨレになるくらい遅い。
2017年になっても、プログラムの高速化は必要なのでした。

そうなると古典的な方法、テーブル化。

計算を事前にしておいて、値を参照するだけなのですな。

今回、ほとんどリアルタイム部分はテーブル化してみました。

自前で全部用意しようと思ったけど、どうしてもピッチ関連だけはx68sound.dllのやり方
を使わせて頂く事になりました・・。むっちゃ大変なのよ、ピッチ関連・・。

実際どこまで作れたかというと、サインテーブルを用意して音程を変えるという所まで
作れたのでございます。ところが、ノートオン後、ノートオフの前にピッチをビビビと
変化させるとものすごいブリブリとノイズっぽいものが乗るのね。

波形を見てびっくり!

ピッチが変わる度に、サインテーブルに送る角度がリセットされるので、波形もリセット
されてしまう感じ。サンプル聴いてみて下さい。(※音量でかいかも)

ざらざらした音を再生する

サインテーブルに送る角度を毎回ゼロから計算するのではなく、角速度というもので
順送りにしていく必要があり、そこが何度やってもうまくいかず、最終的にはギブアップ。
FM変調も結局使わせてもらう事になりました・・。

でも完全に諦めたわけでは無い!全体がまとまってきたらまたチャレンジするつもり。

そのあたりの格闘具合はソースコードを見てみて下さい。

その他、大変だったのはエンベロープのテーブル化。

YM2151の挙動をサンプリングして計算で真似てみました。
結構いい感じにまとまってきたのではないでしょうか。
全く同じではなく、似てる感じが頑張ってる感出てます。

音量をテーブル化すると、音量が変わる時にこれまたノイズが乗るので、ロマンシアは
かなりボソボソいっております。これは2点取って補完する処理を入れなければいけない
けどこれも積み残し。

次はついに4オペレータ化!オシレータの波形追加!フィードバック!あとはパッチ!!
パッチはまた地獄になりそうやな・・。

2017年1月8日日曜日

FMtrialリリース

というわけで、2017年も始まったのでVSTインストをリリース。

FMtrialというVSTインスト、これは自分でFM音源を作ってみたい!というロマンと、
制作過程を小出しにするやり方、VSTインスト制作の日本語記事を増やしたい!
など色々な思いのつまったもの。

実験的で、やってみないとわからないというプロジェクト。

まさに、trialという言葉に込められた意味はそこにある。

今まではvstホストとvstインストを同時に開発もしてきたんだけど、なかなか世の中
に出せないなこれ、という作りで、きれいに整えて出せるまでまだ何年もかかりそう。

だったら、今まで培った技術で同時にコンテンツとして「もつ」ものがあればいいんじゃ
ないかしらという狙いもある。

そして、2151を割とそこそこ再現できている「FMplus」は、再現性や計算量軽減の為
にビッチリとテーブルで組まれていて(先人の知恵を頂いて再現)、もし、テーブルで
はなく計算でFM音源作ったらどんな音が鳴るのかしら、というロマンも。

作りようによっては全然FM音源にならないかもしれない!
まあそれもコンテンツとしては楽しいかしら。

とにかく、まずはサイン波をADSRで出すオペレータを一つ。

細かくは、中々うまい事扱えなかったvstguiで8bitFontを表示させる事に成功。
これはまた別のエントリで。

2017年1月5日木曜日

vstguiメモ:表示順位

・GUIのパーツの表示順位
open時にframeに登録される順番に表示されるっぽい。

frame->addView(textLabel);
frame->addView(pDisp);

こうやったら、textLabelよりpDispの方が手前に表示される。
何か優先順位などの設定方法は不明。

2016年12月28日水曜日

ホストとクライアント同時開発の悩み

自作VSTホストに自作VSTインストを乗せて音を出しているので、おかしな状態になった時は
どっちが悪いのかよくわからない時がある。

今回もvstghui。

新たなVSTインストのソースコードサンプルが見つかったので、画像ファイルの任意部分を
出力できそうな雰囲気に。

これでようやく自作フォントが出せるかも!と喜ぶ。

でも中々出てこない。

とにかくvstの開発はオーバーライドしまくりでブラックボックスばかりなので、いつ何が
呼ばれるのか全くわからない!!

サンプルではうまくいっているコードを実行してみても、自分のホスト上だとちゃんと
動かない。そこでCUBASEにもっていくと動いた。なるほど。

具体的にはguiのidle部分。

idleは「100msecごとに呼ばれる」らしいのだけど、自分でホストを作っていると、
「100msecごとに呼ぶ」行為をしないといけないようだ。

どうやってidleを100msecごとに呼ぶのかまーったくわからない。

でも問題がやっと見えたので、フォントは出せそうな雰囲気。

directXプログラムとWindowsAPI系のVSTインストは共存できるかもしれない!!
あとちょっと!!

2015年10月15日木曜日

Windows:vst:2chから転載

VST2.4だったら↓だったと思う。 

・GUI開いたとき、 
 AEffGUIEditor::open() 

・GUI閉じたとき、 
 AEffGUIEditor::close() 

・保存するとき 
 AudioEffectX::getChunk() 
 AudioEffectX::setChunk() 

・プリセット読み書きするとき 
 AudioEffectX::getChunk() 
 AudioEffectX::setChunk() 

・パラメータ動かした時 
 CControlListener::valueChanged 
 →AEffGUIEditor::setParameter 
  →AudioEffectX::setParameterAutomated 
   →AudioEffectX::setParameter 

VST関連、日本語でどこにもまとまってないので、こうやってメモすると何かに使えそう。

2015年10月14日水曜日

Windows:vstgui:プリセット地獄3(完結編)

プリセット地獄からようやく抜け出せたようですよ・・。

今回は視点を変えて、synth1でお世話になってるdaichiさんのシンプルシンセのソースを
解析していくことにした。

vstインストの原型みたいなソースコードなので、一度ビルドが通ると何かと役に立つ。

細かくパッチ関連の所を見てみたら、ウチとは大きく違う部分を発見。

具体的には、getChunk() setChunk()という部分。

まず、VSTの初期化時に、

programsAreChunks(); // 音色データは独自チャンクで保存する

これを宣言して、音色データを独自チャンクで扱うことにして、getChunk() setChunk()
を用意して音色データを渡したり読み込んだりしてみた。

そしたらなんと!CUBASEのセーブ時にパラメータがごちゃごちゃ動いてたのがビタリと
止んで、セーブしたパラメータがロード時にも反映された!

こんなの、最初の神様のソースコードには無かったし、誰も教えてくれないし、挙動が
どうなるのかなんて2chにしか無かったよ!!もう!!


なぜゴチャゴチャとパラメータが動いていたのかを調べてみたら、推測だけど、パッチ
の名前を取得する時にgetProgramNameしか用意してなかった。getProgramNameは
カレントのパッチ名を取得する命令。

そう!パッチリストを作成するために、カレントを一つ一つ動かしてはパッチ名を取得
していたからゴチャゴチャとパラメータが動いていたのだ!しょうもない!!

これはgetProgramNameIndexedという任意のindexのパッチ名を取得できるのを用意
してあげればクリアとなったのでした。


うーん、調べたらなんとかなったけど、こんなのすぐわかんないよ!!


とりあえず、CUBASEではプリセットのパッチを読み込んでエディットしてセーブして、
次ロードした時にちゃんとエディットした状態でリコールされた。パッチのセーブ・ロード
は作らないとダメっぽいけど、しばらくはこれでいいか・・。

2015年10月13日火曜日

Windows:vstgui:プリセット地獄2

LFOが出来て、音源的な所ではある程度完成のような状態になったので、
(まだまだ改良は必要だが)
実際に使う事を考えるとプリセットの問題は避けては通れない。

久しぶりにプリセット地獄に入る。

色々と手を変え品を変えデバグしてみると、興味深い現象にブチあたる。
vsthostというシンプルなホストでデバグしていたのだが、「プリセットを選ぶ」
という行為を行うと、「setProgram」にプログラムの数だけのドドドっとリクエスト
が来る事がわかった。

具体的には、MY_VST_PRESET_NUM分呼ばれてるのではと推測。
ウチのvstは320個プリセットがあるので、320個全部呼ばれる。
その後、目的のプリセットで呼ばれる感じ。

なのでゴチャゴチャとパラメータが動くみたい。

うーん、コレ何してるのかなぁ・・。
パッチリストを取得しているとも考えられるなぁ・・。
リストだけだったら文字列だけでいいのに、なんでパラメータまで呼ぶかなぁ・・。

実際、リスト取得時なのか、パッチ設定時なのかはsetProgram側からは
わからないので、手の出しようが無い状態だべ・・。

他のvstはこの問題どうやって対処してるのかしら。
コードの組み方が間違っているのかしら。

プリセット問題困ったわ・・
誰かおしえてくれーーー!!!!!

2015年9月17日木曜日

Windows:vst:LFOは実装完了

ボタンが使えるようになり、まあせめてピッチLFOだけでも実装しようとしてみたら、
割りとすぐにのった。無事ミョイミョイと言っております。

ピッチのLFOだけなので、ボリュームやパンやフィルターにもLFOがかかるといいの
だけども、ボリュームはともかく、フィルターとかはややこしそうだな・・。実際に今
アクティブフィルターが1基あって、それとは別にフィルターが1基あるのだけど、
そっちにかかるようにするべきか・・。

そろそろ実用できるようにパッチに手をつけないといけないけど、気が重いなぁ・・。
ライブラリに関するファイル関係とか一通りやらないと、イイ感じの実装には
ならないのかしら・・。困った・・。

2015年9月15日火曜日

Windows:vstgui:ボタンは使えるようになった

別件があり、しばらく開発から遠ざかっていたが、ちょっと落ち着いてきたので、また開発再開。

前回のメモを読むに、プリセット問題があって、それを回避するためにボタンが必須との事。

ちょっとしたボタンのテストプログラムが残ってたので、これを利用してボタン作成。

あっけなく動いた。

スライダーやノブと比べて、ボタンが押された時の挙動を作ってあげないといけないけど、
まあ、大したことのない山。時間さえあればできる。

今のところ、vstguiで使えるのは、スライダー、ノブ、ボタンの3つ。
テキストボックスは表示や更新だけできて、ユーザの入力を取得することができない。

別件をやっているうちにどちらかというと、LFOを何とかしないとなーと思っていたので、
プリセットよりLFOを先にやるかも。

2015年7月30日木曜日

Windows:vstgui:プリセット地獄

しばらくVST開発から遠ざかっていて、でも自作のVSTを使いたいので使っていたら、
どうも思った感じの挙動になっていない。

CUBASEでセーブすると、パラメータがごちゃごちゃと動き、エディットしたパラメータ
が全部リセットされて、プリセットに戻ってしまう。何だこれ!!

プリセットはFM音源部分だけに影響するようにしているので、FM音源部分だけが
プリセットに戻る。

こ、これは使えない・・

毎回プリセットに音色データを入れてビルドしないと使えないやんけ!

色々とデバッグして調べてみると、今の実力では標準のプリセットを使うとその現象
から逃れられないというのがわかってきた。

世の中の他のVSTはちゃんと動いているので、何か決定的な勘違いか知らない仕様
があると思われるけど、どうやって調べてもそこがわからなかった。ハマった。

■調べたコト
・getParameterとsetProgramの関係
→CUBASEでは、セーブする時に、
1.現在のプリセット番号を退避
2.エディットしたパラメータを取得して退避
としてくれるはず。

そうすると、ロード時に、
1.退避したプリセットを反映
2.エディットしたパタメータを反映
でいい感じになるのでは?

でも、現在の挙動としては、FM音源部分のみパラメータがごちゃっと動く。
つまり、退避だけしてくれればいいハズなのに、なぜか反映もしている。

・セーブ時にパラメータがごちゃごちゃと動く理由もわからない。
→試しに、setProgramでプリセットパラメータを反映しないようにしたらゴチャっと
動かなくなった。
→また、getParameterを通らなくしても同じようにゴチャっと動かなくなる。

ということは、CUBASEのセーブ時に知らない何かが起きているのではないか。

■回避方法
・標準のプリセットを使わないで、独自のプリセット管理システムを作る
→セーブ時には現在のパラメータのみがセーブされるので問題ない
→ただし、独自のプリセットシステムは敷居が高い!!

■独自方式の問題点
・ボタンを用意して、ポチポチ押したら次の音色、というのはすぐに作れそう。
・音色名を押すとドンと音色リストが開いて、音色名を押すとその音に変わる
というsynth1みたいなやり方がスタンダードだけど、これはものすごく大変!!
→未だに文字や画像を出すのがよくわからないから。

まずはボタンで次の音色ってヤツかな・・。

2015年7月1日水曜日

Windows:VSTにpng使いたい!

GUI作り、壁にぶつかってはちょっとだけ進み、を繰り返しております。

そろそろレイアウトもいい感じになってきたので、透過PNGが使いたい所。
神様の作ったサンプルは全部BMPなので、ファイルサイズも無駄にでかいし、
いい機会だし取り組みました。

神様もさらりと書いております。pngが使いたかったら、zlibをビルドして、
libpngをビルドして、USE_LIBPNGを入れてこうするといけるよ!みたいな。

さらりと書くよねー。さらりと書いてあるから簡単にいくかなと思ったら全然
うまくいかなかった。ハマった。

神様の言うとおりにしてたらダメだったので、自分でやったことをメモる!

■ソースはwebから落としてきてビルドしたらダメ

zlibやlibpngの専用サイトから落としてきてビルドしたらダメだった。じゃあ
どうするかっていうと、VSTSDKの中の、vstguiの隣にあるzlibフォルダと
libpngフォルダの中にあるソースを使うのです。(正確にはvstgui.sfの中ね)

これらを使ってスタティックライブラリとしてビルドする。ビルドはいつも
ウォーニングでまくるけどあっけなく通る。zlib.libとlibpng.libができあがる。

zlib.hとzconf.h、png.hとpngconf.hをコピーして自分のトコにもってきて、
ビルドする。エラーでまくり。良く読むとlibの追加の方法が良くわかって
なかった。

■ライブラリの扱いは適当ではダメ

・libのパスを通す
(構成プロパティ→VC++ディレクトリ→ライブラリティレクトリ)
・libそのものを明示的に追加する
(構成プロパティ→リンカー→追加の依存ライブラリ)

これが必要なのね!ここハマった。みんなわかってるから簡単に書いて
るんだもの。そして、ビルドしたらまたエラー。なんだかライブラリ内の
関数がカブってるみたいな。そこで、

・無視するライブラリを追加
(構成プロパティ→リンカー→特定の規定のライブラリの無視)

ここにMSVCRT.lib(Release)とMSVCRTD.lib(debug)を入れたらビルド通る。

※これ以外にもマルチスレッド指定とかやったけど関係あるのかしら・・

このやり方が合ってるのかどうかわかんないけど、とにかくビルドが通って
無事PNGを使う事ができた。背景画像が800kbから6kbになって感激!

2015年6月30日火曜日

Windows:vstgui:解決はいつもいきなり

独自の画像表示の方法がわからないので、テキストエディットでパラメータを表示
することにしていた。しかし、パラメータを変えてもテキストの中身を変える方法が
わからない。

また、プリセットを読み込んでも、スライダーやノブは変わるのに、テキストの表示
は変わらない。これは困った。

VSTinstからGUIの関数が呼べないのがネックになっていた。GUIを作るときに、

editor = new VstGui(this);

みたいにするんだけど、このeditorという入り口から自分の作った関数が呼べない。
これは騙し騙しやってるC++の継承とか仮想関数とかよくわかんないトコが原因
ぽくて、非常に困っていた。これまたハマった。

いろいろとググってみると、別の角度からいける感じがする。100msecごとに
呼ばれる「idle()」を使えばいいんじゃねーかと。

この関数、アイドリングの時に呼ばれるみたいなんだけど、これで常に最新の
パラメータを表示しておけば、結局パラメータを変更しても追随するし、いけそう。

コードをさらりと書いて実行。すぐに解決。

いやー、ものすごい長い時間ハマってたけど、解決する時は一瞬だなぁ・・。

懸念は、100msecごとにテキストをうじゃうじゃと書くのはパフォーマンス的にどうか
という部分くらいかな。でもこの方法以外になさそうだし、これで行こう。

2015年6月26日金曜日

Windows:VSTinstのGUIは情報少なすぎ

世の中にはVSTinstを作ろうなんてヒトは少数なんですかね・・。
とにかく情報が少ない!!少なすぎる!!

神様の作ってくれたサンプル以上の事をしようと思うと、英語のサイトを見る必要があり、
でも英語のサイトを見てもそんなに情報が落ちてない。

GUIなんかもう手探りもいいとこよ!!

CSlider,CKnob,COnOffButtonあたりはサンプルからなんとなく使えたけど、テキストを
出したりするトコとかは見よう見まねでやったらできた的な強引なプログラム!!

実行してみたら実際に出てきたのはいいけど、本当にこのやり方でいいのかしら。

■現在ハマってるところ
・スライダーとかじゃくて、画像を出そうと思うと、てんでやり方がわかんない!!
独自フォントを使って文字出したいのだけど、どうやってやるんだろ・・?

テキストエディットが一応あるので、いけるようになるまではこれで。

・Cknobのハンドルに画像を使用すると、角度が付かない。画像そのものが
その状態のままくるくると動く。世の中のノブって回したら回転するんだけど、
それってみんな独自でやってるのかしら?独自でやるにしても、画像を勝手に
出せないしましてや回転なんかどうやんのか全くわかんない!!

でも、ハンドル画像部分にNULLを入れたら細い白いハンドルが出てきた。
やりたい事と若干違うが(2ピクセルのラインにしたい)、しばらくはこれで。

■なんとなく形にはなった
思った感じではないが、独自のスライダーやノブが動いて音色をエディットできるトコ
まではいけるようになった。これで一度CUBASEとかに読み込ませてみようかしら。

■これからの課題
・見た目をもう少し頑張るか、音の中身をもっとがんばるか、その辺迷いドコロ。
→音の中身を頑張らないと見た目頑張ったってしょうがないのだけどね。

まだまだ手探りだ!!

2015年6月20日土曜日

Windows:すぐに解決

寝ようかと思って最後にちょっと・・とググったら、神様のサイトにしっかりとSDK3.6での
変更点が書いてあった。

引数を一つ消したらビルドが通った・・。

超簡単だった・・。ゲショーン・・。