Posts in Category: iOSC

CoreMIDIの勉強

なんか去年末からごにょごにょやってたんだけど、いろいろあって遅々として進まず。
勉強するには手を動かしてコード書くのがイチバンですよねやっぱ。

CoreMIDIはぱっとみデバイス(Device,Entity,Endpoint)の関係性がいまいちわからずもやもやしてたんですが
自分なりに関係性を図に書いてみました。

CoreMIDIの図(修正)

App側からはClientオブジェクトを作成し、これを通してMIDIデバイスとやりとりするわけですが
デバイス内のEntityがいまいちわからず。
Entity内には実際のMIDI入出力ポート(Endpoint)のSource(MIDI IN) Destination(MIDI OUT)が入っています。

よくあるMIDI IN 2 /MIDI OUT 2 みたいなMIDIインターフェースで手持ちのEDIROL UM-2Gなんかだと
Entity内にそれぞれIN 2コ/OUT 2コなんて構成になってると思いきや
IN 1/OUT 2の入ったEntityが2つ という構成になってました。

MIDI Device(UM-2G)
 |
 ◆-Entity 1 –IN 1 (Source) / OUT 1 (Destination)
 |
 ◆-Entity 2 –IN 1 (Source) / OUT 1 (Destination)

また、Device,Entity,Endpoint はそれぞれユニークなIDが振られているため、永続化に使えるのか?と想像してます。

OSXでは一度接続したMIDI機器の情報は保存される模様で、つなげていなくても全デバイス取得すると取得できちゃったりします。
ただ、Entityプロパティのオフライン情報で実際の接続の有無が確認できる模様。
iPadではこんなことはなく、MIDI機器外すと全デバイス情報もクリアされちゃうみたいです。

CoreMIDIイニシャライズの流れとしては

1 Clientオブジェクトの作成
2 Inportオブジェクト、Outportオブジェクトを作成
3 MIDI受信コールバック関数をInportオブジェクトへ登録(送信のみはいらない)
4 NotificationコールバックをClientへ登録(これは適宜)
5 受信したいEndpoint(Source)とInportオブジェクトをコネクト

これでMIDI受信すると受信コールバックが呼ばれます。
送信はMIDIパケットリストを作成し、Endpoint(Destination)を指定して送信します。

受信したいEndpoint、送信先のEndpointは総じて全部まるっこ指定してるようです。
細かく制御することも可能だと思います。

とりあえずの勉強の成果としてちょっとCoreMIDI Objective-Cラッパーを作ってみました。
ちょとアプリに組み込もうとして作ったものですけど。

受信したMIDIメッセージに対応したデリゲートと
送信用のメソッド組み込んでます。
自分の使いそうなのだけですけど。(つかうってもNote ON/OFF と CCくらい)

初めてGitHub使ってみたけどうまくいけてるんだろか。。。

RTCMidiLib

それにしてもiPadだとCoreMIDIでバッグはほんとやりにくい!
ビルド/デバッグのたびにMacかMIDIインターフェースにつなぎ変えないといけないし
そもそもデバッガ使えない!
プリントデバッグではなく実機でのUITextViewデバッグ!

激しく参考にさせていただいてます
Objective-Audio
http://objective-audio.jp/cat54/core-midi-mac/

Share on Facebook

MacとiPhone/iPadをWiFiルーター無しで接続

先日東京へ行ったとき、ミュージシャンの友人から
WiFiルーターの無いハコでライブするとき、
MacとiPadなどをWiFiで通信するにゃどーやって?
(iOSCやTouchOSCなど特に問題)
という素朴な疑問を投げかけられたんですが、

フツーにWiFiルーター持ち歩くのが一番手っ取り早い方法ではあるけど
実は、OSXは標準で自身がルーターになる機能もってるのです。
ほとんど使うこともないし地味すぎてあまり知られてないだけなんですが
ネット環境のない場所でMacとiPhoneを通信させるもう一つの方法であります。
アドホックというのはちょっと語弊あるかな〜?

無線LAN無し
有線LAN無し
もちろんインターネットも無し
Macを無線LANルーターとして機能させる。
こんな想定で設定してみます。

これはたとえばのネットワーク設定
Ethernet未接続
AirMacも「入」だけどどこにも繋がっていない状態
あとは、ネットワークの設定はなにもしない。(!)

つぎに、

システム環境設定の「共有」を開きます。

「インターネット共有」を選択し(まだチェックはいれないで!)
共有する接続経路を「Ethernet」
つぎにAirMacオプションを押します。

『ネットワーク名」に適当な名前を入力
これはWiFiにおけるSSIDです。WiFiサーチするときに出てくる名前
ライブ中に他の人がアクセスしてきても困りますのでWEPの設定もしておきましょう。

ここまでできたら、先ほどすっとばした、「インターネット共有」にチェックを入れます。
インターネット共有開始確認のダイアログがでるので開始してください。
これでMacはWiFiルーターとして機能します。
もちろんEthernetにはなにもつないでいないのでインターネットなどには繋がりません。
WiFiのLANのみのネットワーク構成されます。

このとき、AirMac状態をメニューバーへ表示するようになっていたらこのような扇+↑になっているはずです。

つぎにiPhone/iPad側の設定。
こちらは通常どおりのWiFi設定だけでOKなのです。
設定/ネットワークを開くと、さきほどMac側で設定したSSIDが見えるはず。
これをタップすると・

WEPのパスワードをきいてくるので入力してください。

無事接続されたら、IPを確認してみましょう。
右端の◎>をタップすると

取得したIPアドレス。
ルーターのIPアドレス。これはホスト側(Mac)のIPということです。
じつは、先に設定したインターネット共有では独自にDHCPが効くようで
クライアント側のIP設定が不要になるナイスな機能でした。

iOSCだとhost設定で↑のルーターIPを入力したり

TouchOSCもHostへルーターIPを入力してください

もちろん制御するアプリに併せてポートなども。

ほいでこれ忘れがちですが
ライブなどが終わったらインターネット共有のチェックは外してくださいませー。

————

あ、ちょっと捕捉

これEthernet無し、他のWifiルーター未接続前提でしたが
他のWiFiルーターへの接続は同居できません。
もし他のWiFiルーターへ接続済みの場合
「共有する接続経路」がAirMacとなり
「相手のコンピューターが使用するポート」にAirMacがでてこなくなります。
要はiPhone/iPadからはこのMacが見えなくなります。
まーiPhone/iPadが他のWiFiルーターへ接続すればいいんですけどね・

あと、共有するデバイスがiPhone/iPadだけではなく、有線のデバイスがある場合(Arduino+Ethershieldとか)
上の「相手のコンピューターが使用するポート」のEthernetをチェックすればおそらく大丈夫かと思います。
DHCPから取得できないデバイスなら 10.0.2.2〜255 で
他の機器とIPがバッティングしないユニークIPを手動で設定しておいてください。

Share on Facebook

recotanaアプリ ただいまセール中!

ちょうど去年の11月あたりはアプリ開発もそうですが
ドラスティックに環境変化せざるをえない出来事もあり
1年間よく乗り切ったよなあ、、と振り返るとそう思っちゃいます
依然、たいして仕事無し、されど面倒はみなくてはならんのであんま外にもでられん
という状況で綱渡りには違いないけど
また1年例のビッグウェーブに乗らせていただく所存です。すっかり通り越してレッドオーシャンか(笑)

そんなわけでiPhoneアプリ開発に手を染め、ほいで自分も1年やり過ごせたアニバーサリーとして
本日よりディスカウントセールを実施しまーす!

iOSC,Copy By Ear ともに115円(2週間限定)のご提供です。
どうぞよろしくお願いします!

CopyByEarの詳細
AppStoreリンク
cbe.jpg

iOSC詳細
AppStoreリンク
iosc.jpg

Share on Facebook

iOSC ver1.05 アップデートしました

サブミットが9/30だったのでちょうど2週間。
だいたい金か土曜にReady for saleが来るけど、今回は火曜日。
もしかして日本で審査してるわけじゃないよね〜(連休明け)

iOSCアップデートしました。
setが削除できなくなる問題を修正しています。
ってこれくらいなんですけど、、
メジャーアップデートしなきゃしなきゃと大改造してるうち相当周回遅れになっちゃったので
モチベーションがすっかり落ちております。。がんばろう〜

ちなみに iOSCは何のアプリかは以下の紹介サイトで。

iOSCサイト
http://recotana.com/iphone/iosc/

iOSC AppStore リンク
AppStore

Share on Facebook

Copy By Ear もうバージョンアップの予定

といってもまだ実装途中なのですが。。
iOSCを公開しているし、ここはOSC(Open Sound Control)を実装すべきでないの?なんて思いがフツフツと
そしていまBonjour(Zeroconf)のこともいろいろ調べていて
なかなか便利な機能だし、ネットを使う上でこれも必須の機能じゃないだろかと思えてきました。
そんなわけでOSC,Bonjour同時に対応しようと思ってます。

それにしても地味なバージョンアップだなあ
いったいだれが使うんだろう(笑)
そんなこと考えてたらなんもできないので粛々と実装してみたのがこんなかんじ

iOSCにて無線LAN経由でリモートコントロールしています。
普通にOSC制御のiPodだけど、、
OSC制御のmp3プレーヤーって世界初?だれもつくらんか。

まー、Arduino用のOSCライブラリも作ってるし、
Arduinoでフットスイッチなんか付けたら、より耳コピ&テープ起こししやすくなるんじゃないだろうか
なんて後付で思いついちゃったりなんかしてー
あとLemurなんかでコンロールしてくれたら意外にいいかもね!
いや、むしろされてやってもいいよ!
iPhone/touch 100台くらい並べてアンサンブルとか!
ザイリーカの同時再生会をiPhoneで!これなら4台で済むし!
なんてねえ。あー懐かしい。。

あーでも当のiOSCはまだBonjourに対応してないし
非Bonjour用にIPアドレス&ポート表示をどっかのViewに埋め込まないといけないのがおっくうだ・・

そのへんができ次第バージョンアップしようとおもてますー。

Share on Facebook