MobMuPlatガイド(PureDataパッチをモバイルデバイスで動かす)
MobMuPlatは、iOSデバイス用の音楽アプリを作成するための一連のツールです。 (テキストコーディングは不要です。)
フロントページ のダウンロードリンクから、MobMuPlat iOSアプリ、またはAndroidアプリ、そして開発パッケージ(MobMuPlatエディタとサンプルファイルを含む)を入手してください 。 また、Pure Data vanilla(バージョン.46以上)がコンピュータにインストールされている必要があります。 ここ で入手してください 。 1. MobMuPlatエディタでユーザーインターフェイスを作成します。
3.これら2つのファイルをあなたのモバイルデバイスに入れます。 (これら2つのファイルをiTunesのMobMuPlat Documentsフォルダにドラッグするか、Androidのファイル転送を使用するか、電子メール/ Dropbox / Google Driveなどを使用してデバイスに転送します。)
4.モバイルデバイスでアプリをプレイしよう!
提供されているチュートリアルやサンプルファイルをチェックして、いろいろなことをすることができます。おそらくこのページを読むよりも早く学ぶ方法です。
----
コンピューターで何かを作る
MobMuPlatEditorを開きます
http://danieliglesia.com/mobmuplat/doc/editorScreenshot1.png
ドキュメント全体のプロパティを設定するには、ドキュメントタブをクリックします。 画面サイズによってキャンバスの縦横比とサイズが決まりますが、このインターフェイスはどのデバイスでも実行できます。
使用するPdファイルの名前を指定してください。 これはあなたのコンピュータ上の任意の開いているPdパッチと通信することができますが、このエントリはあなたがデバイス上のインターフェイスを開いたときにどのpdパッチをロードするかをMobMuPlatアプリに伝えます。
http://danieliglesia.com/mobmuplat/doc/editorScreenshot2.png
いくつかのGUIコントロールを追加するには、追加タブをクリックしてください。 移動、サイズ変更、コピー/貼り付けなど
http://danieliglesia.com/mobmuplat/doc/editorScreenshot3.png]
「Prop」タブをクリックして個々のGUIコントロールのプロパティを設定します
すべてのコントロールには、アドレス、色、およびハイライトの色があります。 ほとんどのコントロールには、追加のタイプ固有のパラメータがあります。
各コントロールに一意のアドレスを割り当てます。
[]http://danieliglesia.com/mobmuplat/doc/editorScreenshot4.png
ロックタブをクリックして編集を無効にし、コントロールを操作します コンソールは、あなたがインターフェースに出入りしているOSCメッセージを表示します。
http://danieliglesia.com/mobmuplat/doc/simulatormedley.png
それではPureData vanilla(.46以上)を起動し、 "PdWrapper.pd"を開いて新しいパッチを作成してください。
ラッパーファイルはMobMuPlatアプリが行うメッセージルーティングをシミュレートします。これはエディタとPdパッチの間でGUIメッセージを送受信します。 これらは、そのアドレスを持つ特定のウィジェットとの間でルーティングされるOSCスタイルのアドレスを使用します。
PureDataパッチに情報を出し入れするためのすべての方法は次のとおりです。
これについては "MobMuPlatTemplate.pd"を見てください。
考えられる「システム」メッセージ(センサー、GPSなど)を以下に示します。
http://danieliglesia.com/mobmuplat/doc/docjunk.png
]
----
デバイスにロードする
MobMuPlatは、探しているファイル(.mmp、.pd、オーディオ、画像)をそのドキュメントフォルダから探します。 すべてのファイルは最上位にある必要があります。フォルダ構造はありません。 MobMuPlatも自動的にzipファイルを解凍します(ただし、zipファイルにフォルダがないことを確認してください)。
そこにファイルを入れるには2つの方法があります。
1)iTunesまたはAndroidのファイル転送経由
デバイスをコンピュータに接続し、iTunesを開いて、左側のサイドバーでデバイスをクリックしてから、上部にある「アプリケーション」をクリックし、「ファイル共有」までスクロールし、MobMuPlatをクリックして、.mmpファイルと.pdファイルをドラッグします。それ以外のものはすべてMobMuPlatドキュメントウィンドウに http://danieliglesia.com/mobmuplat/doc/itunes.png
zipファイルをドラッグした場合は、アプリに移動してファイルリストに移動し、すべてのファイルを表示をクリックして解凍する必要があります。 Androidファイル転送の場合は、ファイルをMobMuPlatフォルダ(MobMuPlatを最初に実行したときに自動的に作成されます)にドラッグするだけです。
2)あなたのデバイスにファイルを取得するための他の方法を介して
MobMuPlatは、.mmp、.pd、および.zipファイルに関連付けられています。 あなたが(メール、Dropbox、モバイルSafariなどを介して)デバイス上のそれらのファイルを手に入れることができるならそれでそれをクリックしてください、そしてあなたは「MobMuPlatで開く」ことができるはずです。 これによりファイルがdocumentsフォルダにコピーされます(ただし、インターフェイスは起動されません)。 Zipファイルは自動的に解凍され、そのファイルはdocumentsフォルダにコピーされます。
GUIウィジェット
「属性」はエディタで定義されたウィジェットのプロパティを記述します。
"input"はPdパッチがsend toGUIを通してGUIウィジェットに送ることができるメッセージです。 すべてのGUIウィジェット:
属性:
色
ハイライトカラー
address:オブジェクトをOSCメッセージの送信元または送信先として指定する文字列。 複数のウィジェットが同じアドレスを持つ場合があります。
入力:
ウィジェットを有効/無効にするには、「1を有効にする」または「0を有効にする」。 (デフォルトは有効になっています。)
スライダー
http://danieliglesia.com/mobmuplat/doc/guielement0.png
属性:
範囲
水平または垂直
出力:
範囲が2の場合は0.0-1.0の浮動小数点数
範囲Nの場合、0から(N-1)の整数(Nが2より大きい場合)
入力:
値を設定および出力するためのfloatまたはint
出力をトリガーせずに "set x"を設定値xに送信
つまみ(ノブ)
http://danieliglesia.com/mobmuplat/doc/guielement1.png
属性:範囲
出力:
範囲が2の場合は0.0-1.0の浮動小数点数
範囲Nの場合、0から(N-1)の整数(Nが2より大きい場合)
入力:
値を設定および出力するためのfloatまたはint
出力をトリガーせずに "set x"を設定値xに送信
ボタン
[]http://danieliglesia.com/mobmuplat/doc/guielement2.png
属性:なし
出力:押し下げで1、押し上げで0
入力:任意のfloat型またはint型がボタンを押すようにトリガし、すぐに解放します
トグル
http://danieliglesia.com/mobmuplat/doc/guielement3.png
属性:
ボーダーの太さ
出力:
トグルオンの場合は1、トグルオフの場合は0
入力:
オン/オフを切り替える0または1
出力をトリガーせずに "set x"を設定値xに送信
ラベル
http://danieliglesia.com/mobmuplat/doc/guielement4.png
属性:
フォントサイズ
フォントファミリー
フォントの種類
出力:なし
入力:
ハイライトの色を切り替えるには、 "highlight" + 0または1
任意のメッセージがテキストを設定します
XYスライダー
http://danieliglesia.com/mobmuplat/doc/guielement5.png
属性:なし
出力:
x + y位置のフロートペア0.0〜1.0
入力:
値を設定するための浮動小数点数のペア0.0-1.0
出力をトリガーせずに値を設定するために "set xy"を送信する
グリッド
http://danieliglesia.com/mobmuplat/doc/guielement6.png]
属性:
mode:トグル(デフォルト)、モメンタリ(ボタンのように)、またはハイブリッド(ボタンのように、指を離さない限り)。
グリッドのx次元
グリッドのy次元
セル境界線の太さ
グリッドセル間のパディング
出力:
セルの切り替え時に、3つの要素リストを出力する:cellX、cellY、value(0または1)
"getcolumn N"を受け取った場合、出力: "column"に続けて列Nの値
"getrow N"を受け取った場合、出力: "row"に続けて行Nの値
入力:
グリッドセルを設定するための3つ組の数値:cellX、cellY、value(0または1)
出力を起動せずに値を設定するには、上記のメッセージの前に "set"を付けます。
グリッドをクリアするには「クリア」
マルチスライダー
http://danieliglesia.com/mobmuplat/doc/guielement7.png
属性:
スライダー数
出力:
値のリスト0.0-1.0
入力:
値の一覧
入力リストの長さはスライダーの数を変更します
パネル
属性:
画像パス
タッチによるスクロールを許可:デフォルトはオフで、タッチによるインターフェイスのスクロールをブロックします。 オンのときは、「パススルー」をタッチしてインターフェースをスクロールします。
出力:なし
入力:
新しい画像を設定する: "image" + pathname
ハイライトカラーを切り替えるには、 "highlight" + 0または1
LCD(より詳しい情報は2Dグラフィックスの例を参照)
属性:
画像パス
出力:触れると、3フロートリストを送信します。
最初の要素は、タッチダウンで「1」、ドラッグで「2」、タッチアップで「0」です。
2番目と3番目の要素はxとyのタッチ位置で、正規化された0 - 1です。
入力:
(以下の値はすべて、ペンの幅を除いて0〜1です)
"framerect" + 4フロート(左x、上y、右x、下y) - ウィジェットのハイライトカラーを使用
"framerect" + 8フロート(左x、上y、右x、下y、赤、緑、青、アルファ)
"paintrect" + 4フロート(左x、上y、右x、下y) - ウィジェットのハイライトカラーを使用
"paintrect" + 8フロート(左x、上y、右x、下y、赤、緑、青、アルファ)
"frameoval" + 4フロート(左x、上y、右x、下y) - ウィジェットのハイライトカラーを使う
"frameoval" + 8フロート(左x、上y、右x、下y、赤、緑、青、アルファ)
"paintoval" + 4フロート(左x、上y、右x、下y) - ウィジェットのハイライトカラーを使用
"paintoval" + 8フロート(左x、上y、右x、下y、赤、緑、青、アルファ)
"framepoly" + Nフロート(x / yペアのリストとしてN / 2ポイントを指定) - ウィジェットのハイライトカラーを使う
"framepolyRGBA" + N + 4フロート(x / yペアのリストとしてN / 2点を指定、赤、緑、青、アルファ)
"paintpoly" + Nフロート(x / yペアのリストとしてN / 2ポイントを指定) - ウィジェットのハイライトカラーを使う
"paintpolyRGBA" + N + 4フロート(x / yペアのリストとしてN / 2点を指定、赤、緑、青、アルファ)
moveto + 2フロート(x、y)
lineto + 2フロート(x、y)
lineto + 6フロート(x、y、赤、緑、blue.alpha)
ペン幅+ 1フロート(ピクセル単位の幅)
マルチタッチ
出力:タッチと移動のたびに、これらのメッセージが送信され、それぞれタッチごとに3つの要素(ボイスインデックス、x位置、y位置)が続きます。
"touchesByTime"の後にタッチごとに3つの要素が続き、最近のものから並べ替え
「touchesByVox」の後にタッチごとに3つの要素が続き、音声インデックスでソートされています
"touchesByX"の後にx位置でソートされた1タッチあたり3要素
"touchesByY"、その後にタッチごとに3要素、y位置でソート
メニュー
属性:
タイトル
出力:触れると、2つの要素リストを送ります。
最初の要素はインデックス
2番目の要素は文字列値です
入力:メニューに取り込む文字列のリスト。
表
属性:
タッチモード:「選択」は範囲をドラッグすることができます。 "Draw"はテーブルの値を直接変更します。
選択色
出力:
"選択"モードでは、選択範囲の2つの要素リストを送信します。
「描画」モードでは出力されません。
input: "refresh"はテーブルデータをGUIウィジェットに再ロードします。
----
システムメッセージ
"/ shake(int)" - シェイクジェスチャーが発生しました(値は常に1です)。 現在はiOSのみです。
"/ tilts(float)(float)" - "調理済み" XYチルト値-1から1
"/ accel(float)(float)(float)" - 生の加速度計データ、x、y、z、範囲-1〜1
"/ gyro(float)(float)(float)" - ジャイロデータ、1秒あたりのラジアン、ロール、ピッチ、ヨーの周囲、-piから+ piの範囲
"/ motion(float)(float)(float)" - 装置の姿勢、ロール、ピッチ、ヨー、範囲-pi〜pi
"/ accelFrequency(float)" - 加速度計と傾斜データの周波数(ヘルツ単位)(デフォルト10) リクエストに応じて送信されます。 現在はiOSのみです。
"/ gyroFrequency(float)" - ジャイロデータの周波数(ヘルツ単位)(デフォルト10) リクエストに応じて送信されます。 現在はiOSのみです。
"/ motionFrequency(float)" - デバイスの動作周波数(ヘルツ)(デフォルトは10) リクエストに応じて送信されます。 現在はiOSのみです。
"/ location(9フロートが続く)" - デバイスの位置情報。 詳しい説明はMMPExamples-GPS.pdを見てください。
"/ distanceFilter(float)" - GPS位置更新フィルター、メートル単位(デフォルト1.0)。 Val <= 0はすべての更新を送信します。 リクエストに応じて送信されます。 現在はiOSのみです。
"/ compass(float)" - コンパス値、度単位
"/ page(int)" - ユーザーが新しいページにスクロールするたびに送信されます
"/ timeList" - 7要素のリストとしてのタイムスタンプ:年、月、日、時、分、秒、ミリ秒。
"/ timeString" - 人間が読めるメッセージとしてのタイムスタンプ
"/ hid(デバイスインデックス)(軸名またはボタン名)(値)" - ジョイスティック/ゲームパッドからHIDメッセージを受け取ります。 現在はAndroidのみです。 現時点では一度に1つのデバイスしかサポートされていないため、デバイスインデックス値は常に0です。 詳細はHIDパッチ例を見てください。
"/ ipAddress(ip as string)" - send toSystemで "/ getIpAddress"を送信したことに応答して送信されます。 "/ textDialog(tag string)(入力文字列)" - send toSystemを介した "/ textDialog"入力によって引き起こされる、テキストダイアログとのユーザーインタラクションに応答して送信されます。 "/ confirmationDialog(文字列としてのタグ)(フロートとしてのボタンインデックス)" - send toSystemを介した "/ confirmationDialog"入力によってトリガーされる、確認ダイアログとのユーザーインタラクションに応答して送信されます。 "/ flash(int)" - 1または0の値でフラッシュをオフにします。
"/ setAccelFrequency(float)"現在はiOSのみです。
"/ getAccelFrequency" - "/ accelFrequency"を介して値を返します。 リストとして送信する必要があります。 現在はiOSのみです。
"/ setGyroFrequency(float)"現在はiOSのみです。
/ getGyroFrequency。 - "/ gyroFrequency"を介して値を返します。 リストとして送信する必要があります。 現在はiOSのみです。
"/ setMotionFrequency(float)"現在はiOSのみです。
"/ getMotionFrequency" - "/ motionFrequency"を介して値を返します。 リストとして送信する必要があります。 現在はiOSのみです。
"/ setDistanceFilter(float)"現在はiOSのみです。
"/ getDistanceFilter" - "/ distanceFilter"を介して値を返します。 リストとして送信する必要があります。 現在はiOSのみです。
"/ vibrate 0"と "/ vibrate 1"は2つの異なる振動を引き起こします。
iOSの場合:MobMuPlatオーディオオプションで適切なオーディオ状態(マイクを上書き)を設定する必要があります。
Androidでは、引数をミリ秒単位の振動持続時間、たとえば "/ vibrate 500"に置き換えることができます。
"/ setPage(int)" - プログラムでインタフェースページNまでスクロールします。
"/ getTime" - タイムスタンプを要求し、/ timeListおよび/ timeString出力メッセージを生成します。
"/ textDialog(文字列としてのタグ)(文字列としてのタイトル)" - テキスト入力ダイアログを表示します。 receive fromSystemにより "/ textDialog"で値を返す "/ confirmationDialog(文字列としてのタグ)(文字列としてのタイトル)" - 確認ダイアログを表示します。 receive fromSystemで "/ confirmationDialog"を指定して値を返します。 ----
ネットワーキング
MobMuPlatはUDP経由でネットワーク上にOSCメッセージを送信します。 それには3つの方法があります。 ネットワーク設定ページに移動します。 すべての場合において、ローカルルーターが推奨されています。 すべての場合において、PureDataメッセージの例はsend toNetworkオブジェクトに接続されています。 詳細については、チュートリアルとパッチ例を参照してください。 "Multicast&Direct":これはIPアドレスにメッセージを送ります。 これは単一のユニキャストアドレス(例えば、あなたのwifiネットワーク上のあなたのラップトップのアドレス、あなたのラップトップにメッセージを送るため)、またはマルチキャストアドレス(ネットワーク上のすべてのデバイスにメッセージを送るため)です。 デフォルトは224.0.0.1のマルチキャストによるものですが、単一のIPアドレスへの直接接続を指定することもできます。 あなたはローカルマシンに送信するためにローカルのWiFiルーターを使用する必要があります、これはインターネット上で情報を送信しません。 入力ポート番号と出力ポート番号を設定することもできます。
Max / MSP、Abelton Liveなど、OSC対応のソフトウェアや言語との間でOSCメッセージを送受信できます。また、デバイス上の他のアプリ(TouchOSCなど)からも送受信できます。
puredataメッセージの例:[list / myParameter myValue(
"Ping&Connect":これは、多対多のコミュニケーションを向上させるためのカスタムネットワークプロトコルです。 他のデバイスを認識し、それらからメッセージを受信するには、すべてのデバイスが「Ping&Connect」対応でなければなりません。 各クライアントは、自分のプレーヤー番号とIPアドレスをマルチキャストで送信します。 各クライアントはネットワーク上の他のクライアントを追跡し、ユニキャストメッセージをすべてのクライアントに送信することも、プレーヤー番号で個々のクライアントに送信することもできます。
すべてのメッセージには、1) "/ send"の記号、および2)送信先のプレーヤー番号(または "all"または "allButMe"の記号)が先頭に付きます。 (クライアントは自分自身をサーバーとして指定することもできます。)メッセージは宛先に表示されます(最初の2つの要素はありません)。
PureDataメッセージの例:
すべてのクライアントにメッセージを送信します(送信者への返信も含む):[list / send all / myParameter myValue(
プレーヤー#4にメッセージを送る:[list / send 4 / myParameter myValue(
これらのメッセージを(send toNetwork経由で)使用して、Ping&Connectネットワークの状態を照会または影響を与えることもできます。 "/ playerNumberSet" - receive fromNetworkを介して "/ pingandconnect / playerNumberSet(floatのリスト)"を返します。 または "/ pingandconnect / myPlayerNumber" - receive fromNetworkを介して "/ pingandconnect / myPlayerNumber(float)"を返します。 "/ pingandconnect / enable(1または0)" - パッチからプログラムでプロトコルを有効/無効にする
"/ pingandconnect / isEnabled" - receive fromNetworkを介して "/ pingandconnect / isEnabled(1または0 float)"を返します。 "LANdini":配達と注文が保証された、多対多通信用のカスタムネットワークプロトコル。 LANdiniの詳細については、「LANdini」の例を参照してください。 他のデバイスを認識してそれらからメッセージを受信するには、すべてのデバイスがLANdini対応でなければなりません。 各クライアントは自分の名前やその他の情報を書き出し、各クライアントは他のクライアントの状態を記録しています。
すべてのメッセージの先頭には、1)送信プロトコル( "/ send"、 "/ sendGD"、または "/ sendOGD")、2)宛先( "all"、 "allButMe"、またはユーザーの名前)、3)その他が付いています。ユーザーメッセージの メッセージは宛先に表示されます(最初の2つの要素なしで)。
PureDataメッセージの例:
送信者を除くすべてのクライアントに配信保証メッセージを送信します。
[list / sendGD allButMe / myParameter myValue(
これらのメッセージを(send toNetwork経由で)使用して、Ping&Connectネットワークの状態を照会または影響を与えることもできます。 "/ landini / enable(1または0)" - パッチからプログラムでプロトコルを有効/無効にする
----
オーディオとMIDI
オーディオはdac〜オブジェクトを介してPureData内のスピーカーに送信され、dac〜オブジェクトは適切なハードウェア(デバイススピーカー、ヘッドフォンなど)にルーティングされます。 マイク入力はadc〜オブジェクトを介して行われます。 フィードバックを避けるためにヘッドフォンを使用してください。 iOSでは、外部クラス準拠のUSBインタフェースがサポートされています。 マルチチャンネルオーディオはサポートされていますが、Audio&Midi設定ページのスイッチで有効にする必要があります。 MIDI:アプリで、MIDI入力デバイスを選択します。 その後、MIDIメッセージは適切なMIDI PureDataオブジェクト(noteinなど)にルーティングされます。 他のアプリからMIDIを送信することができます。 MobMuPlatオーディオエンジンを実行し続けるには、アプリのAudio&Midi設定ページに移動してバックグラウンドオーディオを有効にします。 ----
コンタクト
質問? バグレポート? 電子メール:info -AT- mobmuplat.com
iOSのクラッシュログを見つける方法