Modelと対応するエンティティ名の設定

app-engine-patchだとModelクラスに対応するGoogle App Engine側のエンティティは、"package_model"のDjango風な命名規則で作成されるらしい。

普通のDjangoでは、モデルのMetaオプションのdb_tableでテーブル名つけれるとドキュメントに書いてあったけど、app-engine-patchではその方法は動かなかった。
でも↓これでエンティティ名を指定できたのでまあいいか。

class MyModel(db.Model):
    @classmethod
    def kind(cls):
        return "MyModel"

両手に持つ

最初の動画のように両手でバラバラに持つと安定性が悪くなるから、ベルトで軽く固定しつつ握りやすいようにすると?ってことで、木の板を切り貼りして試作した。

  • グリップとiPhoneの位置と角度は、演奏者の手の具合よって最適な位置を探さないと弾けたもんじゃない
  • 左手裏側のオクターブキーの配置は特に気をつけないと運指中に押せない
  • 左手側にマウスピースを直接付けるのは違う気がする
  • なのでマウスピースはBC3みたいにヘッドセット型で試作してみようと思う

自作ウィンドシンセはじめました

今日のNT名古屋2(第2回ニコニコ技術部東海勉強会)に持って行ったやつです。相手してくださった皆さんありがとうございました。
また明日から、タッチパネルを活用した奏法への対応、形状の見直し、リップセンサの追加とか色々やっていく予定です。
D

ウィンドシンセを作りたい

iPhoneいじりを再開しました。
D
仕組み等は動画中で説明していますが、最終的にはWXやEWIとは別の特徴を持ったウィンドシンセを作りたいわけです。
とりあえず、iPhoneとMacだけでできる部分を少し作ってみました。続きはまた今度。


コメでリクエストのあったmp3、ここに置いときますね。そのうち消すかも知れません。Between The Strings

Cocoa本

Cocoa Design Patterns (Developer's Library)

Cocoa Design Patterns (Developer's Library)


なんか新しいの出てる。

“Next time some kid shows up at my door asking for a code review, this is the book that I am going to throw at him.”

–Aaron Hillegass, founder of Big Nerd Ranch, Inc., and author of Cocoa Programming for Mac OS X

ヒレガス氏は、コードレビュー頼みに来たやつにこの本を投げつけてやるんだそうだ。


読みたいなぁ…目次にはほのかに興味を引く項目がちらほら。

いま積んでる本をある程度読んだら次に買おうかな。

MIDIPacketの作成

Core MIDIでは送信するMIDIデータをMIDIPacket構造体に詰めて送りますが、パケットデータに具体的にどんな値を指定するのかといったMIDIの仕様に関わる部分は、Appleのドキュメントには載っていないみたい。
とりあえずノートオン/オフ、コントロールチェンジ、ピッチベンドについては、以下の方法で送れました。

Note On

MIDIPacket packet;
packet.timeStamp = 0;
packet.length = 3;
packet.data[0] = 0x90;
packet.data[1] = noteNum;//ノートナンバー
packet.data[2] = 100;//ノートオンベロシティ

Note Off

MIDIPacket packet;
packet.timeStamp = 0;
packet.length = 3;
packet.data[0] = 0x80;
packet.data[1] = noteNum;//ノートナンバー
packet.data[2] = 0x00;//ノートオフベロシティ

Control Change

MIDIPacket packet;
packet.timeStamp = 0;
packet.length = 3;
packet.data[0] = 0xB0;
packet.data[1] = ccNum;//CCナンバー
packet.data[2] = ccValue;//値

Pitch Bend

//valueは0から16383の範囲
//中間値である8192は[LSB:0, MSB:64]になる
int LSB = value & (0x7F);//下位7bit
int MSB = value >> 7;//上位7bit

MIDIPacket packet;
packet.timeStamp = 0;
packet.length = 3;
packet.data[0] = 0xE0;
packet.data[1] = LSB;//パケットはLSB - MSBの順
packet.data[2] = MSB;

iPhoneの開発環境を移行

MacBook Kuro(Leopard)からPro(Snow Leopard)にiPhoneの開発環境を移行したので手順メモ。


この状態でXcodeiPhoneプロジェクトを開いた時、Code Signing Identityに選択できる一覧の中に見覚えのあるProvisioning Profilesの名前が出ていたのでそれを選択し、実機でデバッグ実行ができるようになっていました。
ただ、SDKは3.0しかインストールされていないので、うちのiPod touch(ver. 2.2)ではデバッグできなくなってしまった…。古いSDKってダウンロードできないんでしょうか。昔落としたdmgファイルは消したと思うし…

*1:自分がやったときは新Mac側でインストールするときにエラーのようなものが出たが、よく読まずにダイアログを消してしまった。一応動いてるようなので…良いのか?