amazon検索
最近のコメント
Recent Entries
Archives
Search


Links
Calendar
2014年08月
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 29 30
31            
Powered by
Movable Type 2.65
カテゴリ別アーカイブ
RadioSharkPlayer [14件]
VBA [2件]
VC [1件]
VSTi_ChordMaster [8件]
アセンブラ [2件]
知識 [4件]
TOTAL:

TODAY:

YESTERDAY:


2006年02月19日

_ボタンつけた

これまた、センスのないボタンになっちまいました。それぞれのコントロールを眺めてると思うんです。この統一性の無さって何?w

でもスライダはランダムにコードを選択する要素でもありましたが、ボタンはきっちりと狙ったコードが鳴らせるので楽しいですね。やぺー、これだけの機能でも十分すぎるw

snapshot060219_2.png

次はコードの転回を操作する処理をつくるぜ、コードは転回しないと自然なコード進行が再現できないもんね。ギターコードモードとかもつくったろうかと思ってます。ギターの基本フォームがかき鳴らす音ってなんか気持ちいいよね。

常人では絶対にひけないようなコードが簡単に試せるのがよかったりします(トランスをフルマニュアルで演奏する坂本先生タイプの人間は除外です。)。テンポ140で16分音符とかで速弾きコードも試せるぜ。まだ不完全だからみんなにお披露目できないのが惜しいくらいに楽しいですよ。これ。

気に入ったコード進行を見つけてからピアノロールにノートを配置するという使い方です。
弾いたコードの履歴をとっといて、smfファイルとかmidiファイルをつくろうかと思いましたが、そこまでいける技術と時間はないような気がするのでやめときます。実現したとしてもなんか面倒な利用方法しか思いつかないし、最善の利用法を考えると、VSTiがDAWのピアノロールにアクセスするような暴挙ができないと駄目だと思います。

_サボりすぎた

はい。サボりすぎました。だって楽しい誘惑がいっぱいなんだもん。
オリンピックも面白いし、ライブドア上場廃止への動きも楽しい。堀江起訴もしかり・・・
ギター弾いて楽しい、買い物に行ったり、お出かけしていろんなもの見てきたりするよね。

というわけで、サボりすぎるのもよくないので、少しだけ触りました。
そう、たったこれだけなんだ。今、何のコードを引いているか文字列にして表示するという処理です。素敵。だれか画面デザインを考えて欲しい。なんだこの美しくない配色w
あとでどうにでも変更できるという余裕をかまして作っているうちに大変なことになるという道筋をたどっている気がしないでもない。

snapshot060219.png

まぁとにかくだ、気楽にいきまっしょいw正直なところ死ぬまでにできればいいかなぐらいで考えてます(ぉぃ。

うん、今はChord選択用のスライダ連動型ボタンをデザイン中。とりあえずテストドライブ用のデザインをしています。最終的にはものすごい緻密かつ機能的なデザインをしないと、沢山あるChordボタンが画面内に収まらなくなるよね。あー集中してたらネットラジオをまたサボってしまった。時間管理がうまくできないおじさんは社会人失格だね。まいったまいった。

あーそうそう。ソフトウェア開発技術者試験を受けることにしました。今年こそとる!これまでに2回申し込んでいて、1回はサボり、2回目はガチで敗戦を決め込んでしまいましたw。オレって最低w

基本情報処理技術者からソフトウェア開発技術者になってみせます!そしてアプリケーションエンジニアへ挑戦するぜ!つうか、アプリケーションエンジニアの問題って難しすぎる。とりあえずはソフトウェア開発技術者だなぁ。SQLは会社で無理やりMySQLデータベースを使ってのリソグラフィ技術支援システムを構築して、実務経験を積みつつばっちし覚えたし、2年前に午前の部の勉強はひととおりやったぜ、あともう少し努力しないとなぁ。この試験って実務レベルがあるからといって通るような試験じゃないぜ。この試験専用の勉強をしないと流石に無理だわ。その前に自分の仕事は情報処理技術って関係ないしw

リソグラフィとかそういう、たぐいの勉強したほうがええんかなwんんや、日本最速の開発のためには欠かせない技術だ。がんがん勉強して、自信つけていこうと思う。

2006年02月12日

_マイナーコードの切り替えが出来るようになった。

snapshot060212.png
やっぱマイナーコードって暗いけど素敵です。なんか渋い響きですね。
最近いろんな和音を聞いているおかげなのか、好きなコードと嫌いなコードがだんだんわかってきました。

はやく、これを使って曲をつくってみたいなぁ。

ちなみに現段階で、ユーザインターフェース(UI)は恐ろしいほどしょぼいです。なんかFLASHでの映像作成のためにはじめたDTMがいつのまにやらプログラミング作成になっているというこの脱線具合。これほどに本来の目的から遠ざかっていく人間が本来の道に戻るの日は来るのでしょうかw

このままどんどん脱線しまくって、プログラミングしやすい環境をもとめてOSづくりとかやりはじめたりしないか、今からものすごく心配です。

というわけで、次の目標は新たにボタンスイッチを作成して、コードの種類をそのボタンスイッチで切り替えできるようにすることと、既存のコード切り替えスライダとUIが連動するように設定します。

128段階スライダを0~1の小数点で管理することのややこしさが身に染みてきました。でも独自のコントロール管理クラスにしちゃうとこれまたややこしさが倍増するので、このままSDKの仕様に基づいて作ってみようと思うわけであります。

2006年02月11日

_ユーザインターフェース(UI)って作るの大変

頑張ってく背景だけ作ったのです。実装も頑張りました。
独自のユーザインタフェースを実装するのって案外大変ですよコレw

snapshot060211.png


今回のVSTiは物凄く便利だと思うので、出来上がったら、公開しようと思っています。
というわけで、制作者のところにハンドル名を記述しようかと思ったんですけど、
なんか恥ずかしいし、短く過ぎてなんかしっくりこないから、なんかの会社みたいな名称を考えてつけてみました。その名も「Yonetek Media Systems =よねてっく メディア システムズ」MacromediaとAdobeとyonetを融合させたようなネーミングにしましたw今後、もしプログラミングを本意気でやる機会があれば、このネーミングで統一していきたいなぁと思っております。

さて、こんなところで油売ってないで、作業に戻ります。いやー実に過酷です。

2006年02月10日

_納得

DreamStationでは暴走がとまらない件について、どうやらMidiEventがまとめて送られてくると失敗するのはDreamStation側の問題のようです。こういう複数のMidiEventが同時に送られてくることに対応できていないVSTiが有料で販売されているなんて、信じがたいがこれは紛れも無い事実でありまして、

5000円返せ!のVSTiです。DreamStationのようなVSTi用に何か対策を講じた処理を追加するのが僕のお仕事になるわけですが、ちょっとお手上げだなぁ。あのChordSpaceでさえDreamStationを暴走させていることがわかりました。これは後で対応することにしようと思います。特定のVSTi固有の問題にいちいち悩んでいてもしょうがないよね。

じゃあ、今日は頑張ってマイナーコードとメジャーコードを切り替えるスライダをつくってみようかなぁ、

MIDIコントローラの仕様によるとスライダは128の値を送信できるのが普通みたい。スライダが0〜63のときをメジャーコード64〜127ときをマイナーコードにしてみます。でもVSTではこの値を0〜1の浮動小数点数で管理しなければいけないようです。つまり0〜63は0.00〜0.49にして64〜127は0.50〜0.99にしないとねあ1.00もだね。

じゃ、とりあえず面倒だから今は0〜63は0にして64〜127は1にしようっと。スライダはとりあえずVSTSDK標準のGUIを流用してみよう。

2006年02月08日

_出来た!

なんだ、きちんとMidiメッセージを全部処理していなかったせいだったんだ。
同時に送られてきた場合は最初の一つしか処理してなかったorz

せっかくループ処理作ったのに、一つうまくいったら関数を強制的に終わらせてたよ。
ショック
なんかすっげー、簡単なミスしてた。

楽しい。コードひけまくり。でも弾いているとメジャーコードだけではつまんないってことを身に染みて感じるようになるよ。ギターでも同じ指の形で押さえるフレットをスライドさせてもつまんないから、当然なんだけどね。たぶんマイナーコードに対応するだけでもずいぶんかわってくるんだろうなぁ。よし、次の作戦はまた明日やね。

とおもったらDreamStationDXi2は暴走しやがった。どういうことなんだ、ますますわけわからねぇぜ。

_少しだけわかった「中間報告」(ん、誰に?

どうやら、ほぼ同時に離した場合だけ0x80 0xnn 0x00 0x00 がきちんと出力されていない
ようです。

MIDIキーボードはきちんと信号をだしてるはずなので、まずはありえない。てことはやっぱり自分のせいなのです。ふぐー。でも以下のトレースで少しわかってきたよ。

キーボード番号 32 と 2f を同時に押す。
0x0 0x 1 Event Info送信
0x90 0x32 0x63 0x0 Chord root
0x90 0x36 0x63 0x0 Chord +4
0x90 0x39 0x63 0x0 Chord +7
0x0 0x 3 Event Info受信 32のメジャーコードが鳴る
0x90 0x32 0x63 0x0 Chord root
0x90 0x36 0x63 0x0 Chord +4
0x90 0x39 0x63 0x0 Chord +7
0x0 0x 1 Event Info送信
0x90 0x2f 0x63 0x0 Chord root
0x90 0x33 0x63 0x0 Chord +4
0x90 0x36 0x63 0x0 Chord +7
0x0 0x 3 Event Info受信 2fのメジャーコードが鳴る
0x90 0x2f 0x63 0x0 Chord root
0x90 0x33 0x63 0x0 Chord +4
0x90 0x36 0x63 0x0 Chord +7

0x0 0x 2 Event Info送信
0x80 0x2f 0x 0 0x0 Chord root
0x80 0x33 0x 0 0x0 Chord +4
0x80 0x36 0x 0 0x0 Chord +7
0x0 0x 6 Event Info受信 2fのメジャーコードが止まる
0x80 0x2f 0x 0 0x0 Chord root
0x80 0x33 0x 0 0x0 Chord +4
0x80 0x36 0x 0 0x0 Chord +7

32のメジャーコードの音を止める信号は出ない。2fのメジャーコードと重複している構成要素の36 番は止まりました。この状態でノートを止める信号を送出してみるも音は止まりませんでした。ゆっくり離すと問題なく止まる。イベントが複数とどいている兆候がありますので、こいつを上手く処理していないということになるのかな。同時に鍵盤をおしてもEventはひとつしか発生しないようになってるみたいなので、そのあたりが原因かもしれません。もうちょっと動きをおってみようと思います。

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なら同じ音を弾けば正常復帰。

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