「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



例によってPCのシリアルMIDI関係の続き。

Windows7に仮想MIDIケーブルLoopBeを導入した
ので、コイツを通してMIDIの送受信ができるのか
を確認する作戦。

YAMAHAの音源内蔵キーボード(MIDIマスターと
しても外付け音源としても動く便利物)と、
以前作ったUART-MIDIのシリアルコンバータ
http://picavr.uunyan.com/avr_m_uart_midi.html
を繋いで、送受信が出来るかどうかを確認してみる。

接続イメージ。


まずは図の黒いほうのルート。PC上のMIDI鍵盤ソフト
で演奏して、外付けのMIDI音源がなるかどうか。
これがうまく行けば、ArduinoでMIDIシンセの音源
を作って、図中のコンバータの代わりにArduinoボード上
のUSBシリアル変換を通して「ケーブル1本」で音が
鳴らせるので、スケッチの確認が簡単に行えるという
目論見。

いざ!
…問題なく鳴るなぁ。バッチリ。OK。

つぎに図の赤いほうのルート。外付けMIDI鍵盤を
弾いて内蔵音源から音がでるかどうか。

いざ!
…なんか微妙。鳴らないわけじゃないんだけど、
鳴らないことの方が多い。
Serial - MIDI converter画面の右下のインジケータ
を眺めると、データが流れるときに緑だけじゃなく
赤でも点滅するんだけど、この赤はなんか意味ある
のかな?ループしちゃってる?

Serial - MIDI converterを通していることが
原因かもしれないので、代わりにオイラ謹製の
http://picavr.uunyan.com/warehouse_midi_mon.html
シリアルMIDIモニタや、バイナリ表示可能な
汎用シリアルモニタソフトを使って通信を
眺めてみる…。うん。問題ない。ちゃんと
届いてる。

Serial - MIDI converterを通す通し方が間違って
いるのかな?Serial - MIDI converter起動時の
設定とか。後で考えよう。


とりあえずPCソフト側から好きなだけMIDI信号を
出力できるようになったので、続いて、
http://ichirowo.com/2011/06/arduino-midi-sound-source/
このサイトのスケッチをArduinoに書き込んで、
圧電スピーカ繋いで鳴らしてみる。

ちゃんと3ポリで演奏できて満足。このスケッチの
解りやすさも、MIDIライブラリの使いやすさも
なかなか。


さて、準備万端整ったところで、スケッチを弄りだす。
作戦はPWMをつかってDDS方式で音声合成し、とりあえず
6ポリで正弦波を出力。

PWMにタイマーを1個、DDS計算のトリガにタイマーを1個、
合計2個使用。Arduinoはタイマー0はシステムで使用
しているので、残りの2つをこれらにまわす。

参考にしたスケッチでは音程のデータを「周波数」で
設定してあるんだけど、DDSだから角速度(ω)に
あわせてテーブルを作り直す。
DDSの計算を毎秒20000回(出力できる音声は
10000Hzまで)として、256点のテーブルなので、
整数部に8ビット(256点)、小数部8ビットと
すれば音程を外さずそこそこ鳴るでしょう。

折角のArduinoなんだけど、タイマー関係をカリカリ
にチューンするライブラリはないので、SFRを直接
弄りまくるしかないな。とりあえずここまで。


http://www.pentax.jp/japan/products/k-01/index.html
ペンタックスのK-01。ほぉ。わかってるねぇ!
さすがオイラのペンタックス。新しいマウントを
持ってこず、Kマウントレンズが使いまくれる
ボデーってところがミソ。
まぁ、メリット/デメリットはあるんだけど、
これはペンタックスユーザにとっていいパッケージ。

ちなみにデメリットはというと、Kマウントの
ミラー有りフランジバックがそのまま踏襲される
ので、レンズ設計の制約がそのまま残ることと、
カメラボデーが分厚くなることかな。

http://www.astroarts.jp/photo-gallery/gallery.pl/special/112
彗星、来てるのか。この明るさだと写ることは
写ると思うんだけど、大口径双眼鏡持って行っても
目で見るのは厳しそうだな。


http://headlines.yahoo.co.jp/hl?a=20120215-00000605-san-soci
「私は文系なので…」って、なんか意味でも
あんのかな?すごい不思議なフレーズ。


そうそう。仮想COMポートのフリーソフトってないの
かなって探してみる。
http://homepage2.nifty.com/nonnon/Link/Null-Modem-Win7.html
64ビット環境だと面倒くさそう。
こっちはどうなんだろう?一緒?
http://www.hhdsoftware.com/free-virtual-serial-ports

仮想COMポートが使えれば、オイラのMIDIモニタソフト
が色々使いまわし出来るんだけどな。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




Windows7になっちゃってから、各メーカー謹製の
シリアル接続のMIDIドライバがことごとく
使えなくなっちゃって、どうしたものかと思って
たんだけど、この間見つけた
http://spikenzielabs.com/SpikenzieLabs/Serial_MIDI.html
Serial - MIDI converter とか仮想MIDIケーブルとか
使えばなんとかなりそうだなぁということで、着手。

まずは仮想MIDIケーブルソフトにMIDI Yokeを
使う方向で調べてみる。

…64ビット環境には対応してないみたい。Windows7も
ダイジョブっぽくない。うーーーーん。いきなり躓く。

代わりのソフトを探してみると、いくつかあるみたい。
有料のもあるんだけど、やっぱできれば無料で。

http://17.pro.tok2.com/~mellow/blog/archives/2547
ここで紹介されているLoopBeがヨサゲな感じ。おドイツ
のソフトで、有料版は30デバイスまで接続できる
んだけど、無料版は1デバイスだけみたい。1デバイス
と言っても、入力側、出力側それぞれ仮想ケーブル
が1本ずつあるイメージらしい。まぁ、多分無料版
で充分だろうな。
http://www.nerds.de/en/download.html
インストール。なんか、アイコンが1個増えた。

次。Serial - MIDI converterをインストールしてみる。
実行すると、とりあえず画面は出てくるんだけど、
なんか公式サイトにあるハードコピーみたいな
TXとかRXっていうのが右下に出てこない。
画面の中央の接続先の表示もCOM1しか出てこず、
LoopBeとかは表示されない。なんだろう?


……しばしアレコレ格闘して、ようやく画面下の
説明文(英語)に気付く。そうか、まだ起動直後は
シリアルMIDI変換ソフトとして機能してなくて、
何と何を接続するのかを「A」とか「B」とか押して
選ぶ必要があるんだな。なるほど。マウスでクリック
したりしても全然反応してくれないから、そこまで
分るのにスゴイ時間かかった…キーボードで操作
するのね…

どんどん選択していくと、LoopBeを繋いだり出来た。
ここでSerial - MIDI converterの入力をLoopBeに
設定すればWindows上のキーボードソフトから
シリアル出力することが出来るわけだな!よし。

次、Windows用のMIDIキーボードソフト探す。
http://www.vector.co.jp/soft/win95/art/se208275.html
いくつかある中からこれがよさそう。インストール。
出力先にLoopBeを設定。できた。
あとこれ。
http://www010.upp.so-net.ne.jp/suede/hummingbird.html
これもLoopBeを選択できた。OK。

とりあえずここまで。あとはシリアルポートに
デバイスを繋げばMIDI信号が勢いよく出て行くはず。


そういえば、以前作ったシリアルMIDIモニタ。
http://picavr.uunyan.com/warehouse_midi_mon.html
コイツを使うには、LoopBeとSerial - MIDI converter
では繋がらないなぁ。いや、繋がることは繋がる
んだろうけど、MIDIとしてじゃなく完全に
シリアルとしてだからなぁ。

もしかして、仮想MIDIケーブルがあるなら、
仮想シリアルケーブルって言うソフトも
あるんじゃないかな?と思って調べてみる。
http://www.vector.co.jp/soft/win95/art/se208275.html
あった。…Windows7では色々面倒ななのか???
うーーーーん。

あまり面倒なら、いっそ普段使っていないCOM1を
完全ループバックモードにしちゃうデバイスでも
作ってPCに挿しておこうかな…あ、それじゃ駄目ジャン。
2つのデバイスを繋がないと。ちなみにWindows7
のテストモードって、何?

http://togarasi.wordpress.com/2010/03/
これはどうだろう?


まぁ、環境構築はともかく、ArduinoでMIDI音源を
作りたいのだ。以前見つけた参考サイト。
http://ichirowo.com/2011/06/arduino-midi-sound-source/
3ポリで鳴らせるんだけど、もっといっぱい
鳴らしたい。最低でも4ポリ、出来れば6ポリ以上。
それと特定のチャンネルを選んで鳴らすんじゃなくて、
全チャンネルから入力可能にしたい。

まだ道は長そうだな…



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする