日本語が、大好きです。(Sorry, Japanese Only.)
          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
<< 2024 November >>

no fun nolife
NEW ENTRIES
RECENT COMMENTS
CATEGORIES
rss
 はてなアンテナに追加
 はてなRSSに登録
 Bloglinesで閲読登録
 Subscribe with livedoor Reader
 Add to Google
 My Yahoo!に追加
LINK
ARCHIVES
music
LOGIN
現在のモード: ゲストモード
USER ID:
PASS:
logout


祝日月曜日ですが、日曜日は戸崎さんにお願いして360レバーのセイミツ化、月曜日はM3に向けての(ハードウェア的な)準備と、monotribeのmidi実装をやっていました。monotribeのmidi in はタケダノヲトさんを参考にしていて、そんなに記事にする価値は無いと思うんだけど、需要あるかな?

今日はちょっと間が開いちゃったけど、「Arduinoを使ってWiiリモコンでmidi操作を可能にする、第三回」最終回です。


■MIDIでelectribeを操作

 Bluetoothの受信ができれば、後はmidiの出力だけなんだけど各パートを鳴らすだけならともかく(note投げればいいので)、音量調整や、エフェクタのパラメータをいじろうとすると、ちょっと苦労する。これらのパートはNRPNという信号でできているので、簡単には投げられないのです。
 
□MIDIメッセージ一覧別頁、RPN/NRPN (CCステータス)
http://altered.s201.xrea.com/documentsdaw/m20070707midimessage2rpn.html

 RPN/NRPNは、CCを使って操作します。「CCって?」っていう所からはちょっと説明キツイですが、「音程以外の設定を変える操作」だと思えばだいたい合ってます。RPN/NRPNは「CCの拡張版」といった感じ。少しずつ進化していったプロトコルにはありがちな事なんですが、最近のプロトコルにはこんな事はないのかな。。。どうだろ。

 ・・・で、じゃあたとえばこれを使ってelectribeを操作するにはどうするかといいますと、実はこれが説明書にはあまり載っていません。後ろの方にスゲェ簡単に載ってるけど、これはあまり役に立たないので、KORGのサイトで「MIDI IMPLEMENTATION」なるものを探してダウンロードしましょう。「electribe midi IMPLEMENTATION」でググると出てきます。技術者向けの情報なのでスゲェ読みにくい資料です。覚悟決めて解読してください。とはいえ、こういう資料で仕事したことがある人は結構すんなり読めると思います。

 たとえば、今回ES-1のエフェクタのON/OFFと、エフェクタ種類の切替を例にします。

 pdfに書いてあるのはこれ。


Effect typeの変更は、05、62(16進)を送ればいい。

 これをコードにすると、こんな感じになります。


Midiout.cc(9,0x63,0x05); // NRPN MSB
Midiout.cc(9,0x62,0x62); // NRPN LSB
Midiout.cc(9,0x06,value); // NRPN DATA MSB
Midiout.cc(9,0x26,0); // NRPN DATA LSB



 NRPNを、NRPN MSB(LSB)、データエントリー MSB(LSB)で分けてCCで送信すればいい。うん、書いちゃうと簡単ですね。

 あとはこれを使って、Wiiリモコンの傾きと、ES-1に渡すパラメータをモード毎に調整すれば完成です。


■蛇足
 もう技術的な事は語ってしまったので特に書くことは無いんですが、ちょっと蛇足で操作周りの事を。今回、aki-bugで中村番台にライブで使わせる為にやったのは、Wiiリモコンでelectribe Sを操作する事。ES-1はサンプラーなのですが、パートの中に「audio in」っていうパートがあって、ステレオ入力に対して、11種類のエフェクトをかける事ができる。当然、サンプルも鳴らすことができる。この2点を使って、ESXで作ったライブ曲に対していろんな干渉ができるようにしました。

 具体的には以下の3点
 
 (a) ゲームの効果音を鳴らす
 (b) ドラムロール → クラッシュシンバルを鳴らす
 (c) エフェクタを鳴らす

 キーのうち、+と-は上の3つのモードを切り替える為に割り当て。現在のモードは、Wiiリモコン側のLEDで表示できる様にしました。操作方法はモード毎に違って、下の様な感じに。

 (a) ゲームの効果音を鳴らす
  ・十時キー、1、2ボタンで鳴らしたい効果音を選択。振り回しでサンプルを鳴らす。
  ・振り回しを誤検出しないように、Bボタンを押している間のみ振り回し検出をする。
  ・確実に鳴らしたい場合に備えて、Aボタンでも同じサンプルが鳴る。

 (b) ドラムロール → クラッシュシンバルを鳴らす
・Bボタンを押すと、押している間ドラムロール。
・リモコンの傾きで音量を設定(持ち上げるほど音量が上がる)
・Bボタンを放せばクラッシュシンバルが鳴る

 (c) エフェクタを鳴らす
  ・十時キー、1、2ボタンでエフェクタを設定。
  ・Bボタンを押している間だけエフェクタON
  ・傾きでパラメータ設定。変化の度合いはエフェクト毎に調整。


 arduinoはC++が使えるので、一度基礎を作れば新機能の実装は簡単ですね(クラスとか、仮想関数とか使えるので)


 他にやる人いるかわかんないけど、ソースをおいておきます。

ソース

studio Gyokimae様のmidi ライブラリを一部改変して使用しています
みならい工作様の作成したWiiリモコン用のライブラリ、
Oleg Mazurov様が作成した、USBホストシールド用ライブラリを使用しています。

Recent Entries from Same Category









    
処理時間 0.644167秒