Calendar
2006年02月
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        
amazon検索
最近のコメント
Archives
Recent Entries
Search


Links
Powered by
Movable Type 2.65
カテゴリ別アーカイブ
RadioSharkPlayer [14件]
VBA [2件]
VC [1件]
VSTi_ChordMaster [8件]
アセンブラ [2件]
知識 [4件]
TOTAL:

TODAY:

YESTERDAY:


2006年02月07日

_とりあえずメジャーコードを指一本で弾けるようになった。

ルート音を押さえるだけでコードを自動で演奏できる。VSTiを開発中。つまりChordSpaceの自分が使いやすい形式版みたいなものです。ChordSpaceのコンセプトはJAZZによく使われるコード進行をマウスクリックだけで実現したり8種類の鍵盤にコードを割り当てることができるという特定の調だけを扱うJAZZのためのVSTi

自分の今作っているChordMasterはまだそんなに仕様が決定したわけでもないのですが、キーボードでルート音を押せばコードがなるというものでコード進行をサポートするというよりはコードの入力をサポートするものを考えています。

とりあえず今日までにルート音のMIDIノート信号からメジャーコードのMIDIノート信号を作って出力する部分を実装してみた。指一本でメジャーコードがカツカツならせるのは気持ちよいですね。黒鍵をおしても全然平気。難しいことなんてひとつもないね。楽しい。メジャーコード進行だけをあつかう明るい感じの曲はこれで簡単につくれそうだ。コード進行に悩んでる時間が少なくなりそうです。

でも問題点が浮上。どうやら原因不明のタイミングでノート信号が暴走する模様です。音が止まらなくなる。暴走してからはベロシティー値0のノート信号を全てのノート番号(音階)に対して送ってみたりするのですが、音は止まらないっす。うーん暴走する原因の特定が難しい。ちなみにFLStudioをホストアプリとして利用中です。

しかも動作も不可解極まりない。起動時にb0 65 00 00 というMidi信号がVSTiに送られてくるし、ためしにMIDIキーボードの入力からオールノートストップ関連のMIDI信号 b0 78 00 00、b0 79 00 00、b0 7B 00 00、といった信号を送っても、受け取るのはb0 65 00 00なのだ。MIDIの仕様に厳密じゃないFLStudioって怪しいけど好き。FLのMIDIは基本的に音を鳴らすためだけに使われているっぽい仕様っぽいなぁ。制御信号はFLが独自の方式で管理していて、VSTiには流さないのかもしれないなぁ。

ちなみに無理やり入力信号をオールノートストップ関連の信号に変換させてVSTiに出力させても音が止まらない。なぜだ!VSTiは一体どんな信号を出力してるんだろう。Midi出力Portから入力Portに流している受け側のVSTi(実際に音をならすVSTi)はなにを受け取ってしまったのか不明だ。なぜ鳴りっぱなしになるんだろうねぇ(´・д・`)

ふむ、あ、0番以外のちゃんねるがなんか悪さをしたのかなぁ、後で確かめてみよう。とにかくしばらく複雑な演奏をすると確実に発生するこの不具合なんとかしないとねぇ。


これが解決したらあとはコードの種類を多種に渡りサポートするコードスイッチ関数とグラフィカルインターフェースの実装が必要や。今のところ、基本構成はVST SDKのサンプルと変わらない見た目です。ボタンクリックでも、MIDIコントローラーのノブでもコードを切り替えできるようにしようと思っています。コードの転回も画面とコントローラーで操作できるようにしようとおもっとります。余裕ができたらアルペジエータ奏法や、コードの中のひとつひとつの音でMIDIベロシティーが調整できるようにもしたいなぁ。どんなインターフェースが便利なんだろうね。試行錯誤だわ☆

結局、それを使うのはコードが押さえられない自分という、自分のためのプログラミングだぜ。
まだ未完成なのにChordMasterと名づけたこのアプリ、使い始めるとChordを自分で押さえるということをMasterできなくなるという矛盾したところもありますが、コードを簡単にならすことはマスターできそうですぜ。

おもしろそうでしょ。でもねここのブログには誰も気がついてないので、秘密の開発日記にしていこうと思ってます。表のサイトからはリンクもはってないし、グーグルさんがいつ見つけてくれるかだなw

自分のプログラムをtraceした結果。
0xb0 0x78 0x 0 0x0 all sound off
0xb0 0x79 0x 0 0x0 reset all controller
0xb0 0x7b 0x 0 0x0 all note off
0x90 0x30 0x63 0x0 Chord root
0x90 0x34 0x63 0x0 Chord +4
0x90 0x37 0x63 0x0 Chord +7
0x80 0x30 0x 0 0x0 Chord root
0x80 0x34 0x 0 0x0 Chord +4
0x80 0x37 0x 0 0x0 Chord +7
0x90 0x34 0x63 0x0 Chord root
0x90 0x38 0x63 0x0 Chord +4
0x90 0x3b 0x63 0x0 Chord +7
0x80 0x34 0x 0 0x0 Chord root
0x80 0x38 0x 0 0x0 Chord +4
0x80 0x3b 0x 0 0x0 Chord +7
0x90 0x37 0x63 0x0 Chord root
0x90 0x3b 0x63 0x0 Chord +4
0x90 0x3e 0x63 0x0 Chord +7
0x80 0x37 0x 0 0x0 Chord root
0x80 0x3b 0x 0 0x0 Chord +4
0x80 0x3e 0x 0 0x0 Chord +7

ちなみにDreamStationDXiの場合、鳴りっぱなし状態に陥ると再起不能。
Sytrusなら同じ音を弾けば正常復帰。

これってオレのせいなのかなぁ。(´・д・`)

Posted by yo-net at 07:54 | Comments (0) | TrackBack(0)