blog - 最新エントリー
Adobe FlashでiPhone/iPadアプリを作るときに、使いたいセンサーの1つが3軸加速度センサー。デバイスを傾けて、画面内のアイテムを動かすなど、様々な応用ができる。基本的なプログラミングの仕方は、意外と簡単。
まずは、Accelerometer関係のライブラリーをインポートする。
そして e.accelerationXやe.accelerationYなどから加速度の値を読み取り、ムービークリップの座標に反映させればよい。

以下のActionScriptは、デバイスを傾けて、ballというムービークリップを動かす。
デバイスの向きを変えると加速度の方向が変わるので、座標軸とその向きを考えて、正負の符号を決める必要がある。xyz軸の向きは図の通り。
また、デバイスの傾きでどの程度ムービークリップを動かすかは、ナマの加速度にかける数値で調整する。
また、境界領域を設定して、壁に当たると跳ね返る(速度の向きが反転する)処理も含まれている。
まずは、Accelerometer関係のライブラリーをインポートする。
そして e.accelerationXやe.accelerationYなどから加速度の値を読み取り、ムービークリップの座標に反映させればよい。

以下のActionScriptは、デバイスを傾けて、ballというムービークリップを動かす。
デバイスの向きを変えると加速度の方向が変わるので、座標軸とその向きを考えて、正負の符号を決める必要がある。xyz軸の向きは図の通り。
また、デバイスの傾きでどの程度ムービークリップを動かすかは、ナマの加速度にかける数値で調整する。
また、境界領域を設定して、壁に当たると跳ね返る(速度の向きが反転する)処理も含まれている。
import flash.sensors.Accelerometer;
import flash.events.AccelerometerEvent;
var acc:Accelerometer = new Accelerometer();
acc.addEventListener(AccelerometerEvent.UPDATE,update);
var tx:int = 0; // x accel
var ty:int = 0; // y accel
var vx:int = 0; // x velocity
var vy:int = 0; // y velocity
function update(e:AccelerometerEvent):void
{
tx = e.accelerationX * 5.5;
ty = e.accelerationY * 5.5;
vx = vx + ( -tx );
vy = vy + ( -ty );
}
this.addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event):void
{
if( ball.x < 200 ) {
vx = Math.abs( vx );
}
if( ball.x > 1800 - ball.width) {
vx = ( -1 ) * Math.abs( vx );
}
if ( ball.y < 100 ){
vy = Math.abs( vy );
}
if ( ball.y > 1186 - ball.height ){
vy = ( -1 ) * Math.abs( vy );
}
ball.x += vx;
ball.y += vy;
}
Adobe FlashでiPhone/iPadアプリをパブリッシュできるのだが、iPhoneアプリではマウスイベントの代わりに、タッチイベントを使う。
具体的には、TouchEventのライブラリーをインポートする。
マルチタッチをするなら、MultiTouchのライブラリーもインポートする。
以下のActionScriptはhogeMCというムービークリップをタッチすると、タッチした座標にMCが動き、指を動かすとMCのフレーム2に切り替わり、タッチを終えると、元に戻るという動きをするスクリプト。
マウスダウン、マウスムーブ、マウスアップが、それぞれTOUCH_BEGIN, TOUCH_MOVE, TOUCH_ENDに相当すると考えられる。
また、マルチタッチをするなら、TOUCH_POINTを使う。
タッチする指の順番が、e.touchPointIDに入っているので、この数値を使って処理を場合分けすればよい。
具体的には、TouchEventのライブラリーをインポートする。
マルチタッチをするなら、MultiTouchのライブラリーもインポートする。
以下のActionScriptはhogeMCというムービークリップをタッチすると、タッチした座標にMCが動き、指を動かすとMCのフレーム2に切り替わり、タッチを終えると、元に戻るという動きをするスクリプト。
マウスダウン、マウスムーブ、マウスアップが、それぞれTOUCH_BEGIN, TOUCH_MOVE, TOUCH_ENDに相当すると考えられる。
また、マルチタッチをするなら、TOUCH_POINTを使う。
タッチする指の順番が、e.touchPointIDに入っているので、この数値を使って処理を場合分けすればよい。
import flash.events.TouchEvent;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
hogeMC.cacheAsBitmap = true;
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
this.stage.addEventListener (TouchEvent.TOUCH_BEGIN, onTouchBegin);
var touchID:int = 0;
function onTouchBegin (e:TouchEvent):void {
hogeMC.x = e.stageX;
hogeMC.y = e.stageY;
touchID = e.touchPointID;
}
this.stage.addEventListener (TouchEvent.TOUCH_MOVE, onTouchMove);
function onTouchMove (e:TouchEvent):void {
zombie.x = e.stageX;
zombie.y = e.stageY;
hogeMC.gotoAndStop( 2 );
if (touchID == e.touchPointID) {
// 1st finger touch
} else if (touchID == (e.touchPointID - 1)) {
// 2nd finger touch
} else if (touchID == (e.touchPointID - 2)) {
// 3rd finger touch
}
}
this.stage.addEventListener (TouchEvent.TOUCH_END, onTouchFinish);
function onTouchFinish (e:TouchEvent):void {
hogeMC.x = e.stageX;
hogeMC.y = e.stageY;
hogeMC.gotoAndStop( 1 );
}
http://buttercup.media.t-kougei.ac.jp/index.php
↑のサイトから動画を視聴、アップロードすることができます。
投稿に当たっての手順
1.ユーザー登録画面へ進みます。
2.登録が完了した場合はメインpageに戻り、ログインpageへ進みます。
3.ログインが正常にできたらメインpageに戻り、アップpageへ。
4.動画投稿。
5.ログインpageからユーザーpageへ移動、投稿した動画を削除できます。
6.ユーザーpageから登録情報変更pageへ移動、ユーザーの設定したpasswordを変更する事が出来ます。
この手順で現在の機能を全て行うことができます。
12月21日更新:動画の削除をユーザー間で行えるようにしました。
今後の予定:動画のタイトル以外の更新をユーザー間で行えるように拡張するつもりです。
↑のサイトから動画を視聴、アップロードすることができます。
投稿に当たっての手順
1.ユーザー登録画面へ進みます。
2.登録が完了した場合はメインpageに戻り、ログインpageへ進みます。
3.ログインが正常にできたらメインpageに戻り、アップpageへ。
4.動画投稿。
5.ログインpageからユーザーpageへ移動、投稿した動画を削除できます。
6.ユーザーpageから登録情報変更pageへ移動、ユーザーの設定したpasswordを変更する事が出来ます。
この手順で現在の機能を全て行うことができます。
12月21日更新:動画の削除をユーザー間で行えるようにしました。
今後の予定:動画のタイトル以外の更新をユーザー間で行えるように拡張するつもりです。
瀬戸内海の蟹(カニ)の甲羅が武士の顔に似ているのはなぜか?
カール・セーガン「コスモス」エピソードII第3話「平家物語と蟹のなぞ」で扱われているのだが、Genetic Algorithmの原理の人為的Selectionが関係している。
Cosmos (Collector’s Edition) [DVD] [Import]
1. 漁師がカニを獲る
2. 甲羅の模様が平家の武士の顔に似ていると、海に逃す(Selection)
3. 顔に似た甲羅をもつカニが生き残り、交配して子孫を残す(Cross Over)
4. 何世代も経つと、顔に似た甲羅のカニが多数派になる
このプロセスで、そうなる。
カール・セーガン「コスモス」エピソードII第3話「平家物語と蟹のなぞ」で扱われているのだが、Genetic Algorithmの原理の人為的Selectionが関係している。
Cosmos (Collector’s Edition) [DVD] [Import]
1. 漁師がカニを獲る
2. 甲羅の模様が平家の武士の顔に似ていると、海に逃す(Selection)
3. 顔に似た甲羅をもつカニが生き残り、交配して子孫を残す(Cross Over)
4. 何世代も経つと、顔に似た甲羅のカニが多数派になる
このプロセスで、そうなる。
MediaWikiはウィキペディアで採用されているwikiシステムで、インタラクティブメディア学科では、前身のメディアアート表現学科のときから授業wikiで使っている。
http://wiki.media.t-kougei.ac.jp/
さて、メインページの左上に表示されるロゴ用の画像だが、これは、管理者メニューのような形でWebで設定できるのかと思ったら、意外とプリミティブな仕方で設定しなければならないようだ。
MediaWikiをインストールしたホームディレクトリーにある、
LocalSettings.phpの$wgLogoで設定する。
たとえば、
したがって、手元でロゴ画像のpngを作成して、サーバ側にFTPなどで転送して設定する。
ということで、学科のwikiのメインページのロゴ画像をIMのロゴ画像に変えてみた。
http://wiki.media.t-kougei.ac.jp/
さて、メインページの左上に表示されるロゴ用の画像だが、これは、管理者メニューのような形でWebで設定できるのかと思ったら、意外とプリミティブな仕方で設定しなければならないようだ。
MediaWikiをインストールしたホームディレクトリーにある、
LocalSettings.phpの$wgLogoで設定する。
たとえば、
$wgLogo = "/images/mwlogo.png";
したがって、手元でロゴ画像のpngを作成して、サーバ側にFTPなどで転送して設定する。
ということで、学科のwikiのメインページのロゴ画像をIMのロゴ画像に変えてみた。
WordPressには、自動更新の機能があって、とても便利だが、パーミッションの設定を変更しないと、うまく更新できない。
たとえば、
また、プラグインンを自動更新するときも
解決策は、WordPressをインストールしたディレクトリーのオーナーとグループをapacheに変更すること。
たとえば、ワードプレスを wordpressディレクトリーにインストールしている場合
自動更新が終わったら、オーナーを元のUsernameに、グループを元のGroupnameに戻す。
たとえば、
更新を展開しています…
ディレクトリを作成できませんでした。
とか、あるいは、更新を展開しています…
ファイルをコピーできませんでした。
インストール失敗
などといったエラーが出る。また、プラグインンを自動更新するときも
古いプラグインを削除できませんでした。
などといったエラーが出る。解決策は、WordPressをインストールしたディレクトリーのオーナーとグループをapacheに変更すること。
たとえば、ワードプレスを wordpressディレクトリーにインストールしている場合
[root@XX]# chown -R apache:apache wordpress/
などとする。自動更新が終わったら、オーナーを元のUsernameに、グループを元のGroupnameに戻す。
[root@XX ]# chown -R Username:Groupname wordpress/
Google syncが廃止になってから、Google CalendarとiPhone/iPadのカレンダーの同期の方法が変更になりましたが、とても簡単になりました。2通りの方法があります。
1. Gmailアカウントを使う方法
1) iPhone/iPadの「設定」の「メール/連絡先/カレンダー」に、Gmailのアカウントを登録する。
2) 「カレンダー」の項目の同期をONにする。
2. CalDAVアカウントを使う方法
1) iPhone/iPadの「設定」の「メール/連絡先/カレンダー」の「アカウントのの追加」から「その他」を選ぶ。
2) カレンダーの欄の「CalDAVアカウントを追加」する。
3) 以下の項目を入力する。
サーバ www.google.com
ユーザ名 Gmailアカウント名
パスワード 上記のパスワード
4) CalDAVのカレンダーをONにする。
いずれの方法でも、Gmailアカウントで使用しているすべてのGoogleカレンダーが同期されます。
1. Gmailアカウントを使う方法
1) iPhone/iPadの「設定」の「メール/連絡先/カレンダー」に、Gmailのアカウントを登録する。
2) 「カレンダー」の項目の同期をONにする。
2. CalDAVアカウントを使う方法
1) iPhone/iPadの「設定」の「メール/連絡先/カレンダー」の「アカウントのの追加」から「その他」を選ぶ。
2) カレンダーの欄の「CalDAVアカウントを追加」する。
3) 以下の項目を入力する。
サーバ www.google.com
ユーザ名 Gmailアカウント名
パスワード 上記のパスワード
4) CalDAVのカレンダーをONにする。
いずれの方法でも、Gmailアカウントで使用しているすべてのGoogleカレンダーが同期されます。
SELinuxを有効にしていると、コンテンツのディレクトリの外にあるhtpasswdのファイルにアクセスできなくなり、.htaccessとhtpasswdでBasic認証ができない。
SELinux状態確認するには、
SELinux無効の場合 Permissive
SELinux無効化するには
SELinux設定ファイル /etc/sysconfig/selinux を編集すれば、システム起動時にSELinuxを有効化・無効化を指定できる。
ちなみに .htaccessの中身は、たとえば
SELinux状態確認するには、
# getenforce
SELinux有効の場合 EnforcingSELinux無効の場合 Permissive
SELinux無効化するには
# setenforce 0
とする。有効化するには、引数に1を指定する。SELinux設定ファイル /etc/sysconfig/selinux を編集すれば、システム起動時にSELinuxを有効化・無効化を指定できる。
#SELINUX=enforcing
SELINUX=disabled
ちなみに .htaccessの中身は、たとえば
AuthUserFile /home/user/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "Enter please !"
AuthType Basic
require valid-user
6/9(日)の工芸大のオープンキャンパスでぺぺろんP氏のボカロ特別講義がありましたが、とても興味深いものでした。要は、「ボカロの歌声と人間の歌声の特徴の違いを理解して、ボカロを人間に近づけるようにパラメータを調整する」ということです。今回、扱われたのは、ピッチと音量変化と子音(特に破裂音)の長さで、これらを調整するだけで、かなり人間に近くなるとのことでした。
まず、ピッチですが、ボカロは発音の最初から正確にピッチを合わせて歌うのに対して、人間は目標のピッチのやや下から入って合わせるという特徴があります。したがって、Pitch bendなどを使って、発音し始めをチョークアップのような仕方でピッチを微妙に調整させます。
長音のビブラートの係り具合も、調整できるので、これも効果があります。
次に音量変化ですが、ボカロは長音でも音量変化はあまりなく、一定の音量を保って歌うのですが、人間は長音だと後半で音量が変化(多くの場合、減少)する傾向にあります。したがって、音の後半の音量変化を下げ傾向にすると、人間の歌い方に近くなります。この音量のパラメータはボーカロイドでは、Dynamicsといい、MIDIで言うExpressionに相当します。
3番目は子音の長さです。特に破裂音の子音は、時間を短くすると歯切れよくなり、人間の歌い方に近づきます。なお、子音の発音時間の長さをボーカロイドでは、Velocityといい、MIDIのVelocity(ノートの鍵盤を叩く早さ、すなわち音の強さ)とは意味が違うので注意が必要です。
1つ1つの調整は些細なことなのですが、こういった微妙なパラメータの調整を地道に積み重ねていくでと、クオリティーがどんどん上がっていくということです。この点ではMIDIの打ち込みで楽曲を作っていくことと似ているといえます。
まず、ピッチですが、ボカロは発音の最初から正確にピッチを合わせて歌うのに対して、人間は目標のピッチのやや下から入って合わせるという特徴があります。したがって、Pitch bendなどを使って、発音し始めをチョークアップのような仕方でピッチを微妙に調整させます。
長音のビブラートの係り具合も、調整できるので、これも効果があります。
次に音量変化ですが、ボカロは長音でも音量変化はあまりなく、一定の音量を保って歌うのですが、人間は長音だと後半で音量が変化(多くの場合、減少)する傾向にあります。したがって、音の後半の音量変化を下げ傾向にすると、人間の歌い方に近くなります。この音量のパラメータはボーカロイドでは、Dynamicsといい、MIDIで言うExpressionに相当します。
3番目は子音の長さです。特に破裂音の子音は、時間を短くすると歯切れよくなり、人間の歌い方に近づきます。なお、子音の発音時間の長さをボーカロイドでは、Velocityといい、MIDIのVelocity(ノートの鍵盤を叩く早さ、すなわち音の強さ)とは意味が違うので注意が必要です。
1つ1つの調整は些細なことなのですが、こういった微妙なパラメータの調整を地道に積み重ねていくでと、クオリティーがどんどん上がっていくということです。この点ではMIDIの打ち込みで楽曲を作っていくことと似ているといえます。
2013/6/9(日)に行われる東京工芸大中野キャンパスにおいて、芸術学部インタラクティブメディア学科のイベントでボカロP虹原ぺぺろん先生が以下の特別講義をしてくださいます。
タイトル: 限りなく人間に近づくボカロの歌声、 虹原ぺぺろん先生のテクニック
日時: 2013/6/9(日) 14:30~15:30
場所: 東京工芸大 中野キャンパス 1号館4階 IMスタジオ
内容: スプリングスクールで好評いただいたボカロP虹原ぺぺろん先生の特別講義第2弾。ボーカロイドを使った歌声をどこまで人間に近づけるか?!人間らしい声にするための数々のテクニックを実演します。初の公式調教本「ボーカロイド公式 調教完全テクニック 」の著者であり、神調教として知られる人気ボカロPの制作をライブで見られます。
予約不要、参加無料です。
多くの方のご来場をお待ちしております。
もし、お持ちの方は、ぺぺろんP先生の著書「ボーカロイド公式 調教完全テクニック
」を持参されるとよいと思います。
オープンキャンパスについては以下を参照。
http://www.t-kougei.ac.jp/admission/open-campus/0609/
タイトル: 限りなく人間に近づくボカロの歌声、 虹原ぺぺろん先生のテクニック
日時: 2013/6/9(日) 14:30~15:30
場所: 東京工芸大 中野キャンパス 1号館4階 IMスタジオ
内容: スプリングスクールで好評いただいたボカロP虹原ぺぺろん先生の特別講義第2弾。ボーカロイドを使った歌声をどこまで人間に近づけるか?!人間らしい声にするための数々のテクニックを実演します。初の公式調教本「ボーカロイド公式 調教完全テクニック 」の著者であり、神調教として知られる人気ボカロPの制作をライブで見られます。
予約不要、参加無料です。
多くの方のご来場をお待ちしております。
もし、お持ちの方は、ぺぺろんP先生の著書「ボーカロイド公式 調教完全テクニック
オープンキャンパスについては以下を参照。
http://www.t-kougei.ac.jp/admission/open-campus/0609/