IoTと聞いたので、WoTでもいいだろうと。
https://twitter.com/okame_okame/status/539786746838282240
というのを見たので。
音楽が好きなものです。
IoTと聞いて、インターネットを通じていろんなものをつなげればいいんだよね、じゃ。
というわけで、最近WoTに興味があるので、ブラウザとMIDIとOSCを繋ぐことなどについてツラツラ書いてみることに。
本日出勤中の通勤電車の中でしか書けないというタイムトライアルにつき、いろいろ乱雑なのでご容赦を。
MIDI
MIDIはシンセとかを繋ぐプロトコルで、30年くらい前からあります。
なぜかMIDIというと、パソコンの横に白い小さな箱を繋いで、「ウチコミ」と呼ばれる何が楽しいんだかわからない作業をしたあげく、ヒット曲のカラオケをいかにリアルに作るか?というのが昔流行っていて。未だに何が楽しくてそんなことしてたのか、やって無かった人にはさっぱりな話で、MIDIの話をすると、その話をするオッサンばかりが近くに多くてあまり良い印象がありません。
しかし、そんな個人的な思いとは関係なく、実際のところは、もうえらく長い間、電子楽器を繋ぐためのプロトコルとして、多くの楽器に搭載されてきたわけです。不動の地位かと思いきや、しかし最近になって、アナログシンセ流行の影響か、なんとMIDIより古いCV/Gateという方式が一緒に復権してきた模様。どんどん新しい技術が生まれてるのに、不思議な話ですね。。。
まぁ、そんな具合で楽器界隈では少々立場が弱くなってんじゃね?と感じなくもないMIDIですが、Webに進出することで生き残りをかけてる模様。
Web MIDI APIがそれです。またか。という話ですので、あまりここでは書きません。
参考リンクだけ貼っておきます。
まぁ、個人的には白い箱で使うくらいならIoTみたいに、さっぱり別の何かで使っ方が面白いと思うわけです。
MIDIを使うメリットはUSBで直接ブラウザと繋がる(なんて乱暴な説明!)ところでしょう。
逆にデメリットは、音楽用に細かく送れる情報が決まっていて、あまり融通が効かないのと、送れる情報が少ないので細かいアナログセンサーの情報を送ったりするのにはあまり向かない、といったところでしょうか。
あと、Arduinoを使えば、USB-MIDIが簡単に作れるので、いろいろなヘンテコデバイスが簡単に作れるのもMIDIの使いどころといえそうです。
そのへんも、何度か書いてますので、ご興味のある方は見ていただけるとうれしいです。
記事ではコントローラーのことしか書いてませんが、MIDIを受けて動くものももちろん作れます。
MIDIで動くIoT機器も作れると思いますよ!(強引w)
OSC
さてOSCですが、こちらはMIDIに取って替わるぞ!と言ってどこぞの大学で作ってるプロトコルです。
なんだろ、こっちはMIDIと違ってかなりルールが緩いです。
名前決めてサイズ決めて好きなデータ送れる、みたいな自由奔放な感じです。
iPhoneやiPadのコントローラ系のアプリなどでは結構使われてて、Max/MspとかProcessingとかやってる人にはお馴染みのプロトコルですが、いまいち流行ってない気がします。
ルールが緩すぎて、結局上位プロトコルがないと機器間で互換性が保てないんですよね。。。
IPベースというのもいいのか、わるいのか。。。といった部分が足をひっぱってるような。。。
これの使いどころですが、独自にこれからつなげる全ての機器をコレにルールを合わせる、みたいな使い方はあまり意味がなくて(そんなことならWebSocketを普通に使えばよいし)、最初からOSCに対応してる機器やアプリを普通にWebに繋いでいくのに使うと面白いんじゃないかと思っています。
WebでのOSCの使い方ですが、OSCのコントローラからWebへデータを送るような場合は、ブラウザでOSCを読む必要があります。
やり方はモハヨナオさんのblogを見てください。
OSC in the browser / 音の鳴るブログ 鳴らないこともある
一方、Webから普通にOSCに流すには、WebSocketを間に挟むと楽です。
こちらは、手前味噌ですが以前書いたブラウザからWebSocketとOSCを使ってMAXを操作してみるを見てください。
まとめ
音楽好きなので身近なMIDIとOSCがWoTに使えないか考えてみました。
MIDIやOSCに対応したアプリや機器(楽器など)は結構多くて、しかも「繋がれば楽しい」モノが多いのが特徴!
というわけで、どんどん繋いでいきたいですね!
もちろん、ブラウザと色々なモノを繋ぐには、MIDIやOSCだけでなく、WebSocketやhttpや、WebRTCなんかを組み合わせて使っていくことになります。そのあたりも機会があれば書いていきたいです。