2013年12月28日土曜日

[Android] アナログ時計のアプリを作ってみました

Analog clock on OpenGL
先日、時計が壊れてしまいました。デジタル時計は身近なところにありますが、アナログ時計は意外と少ないのでアプリを作ってみました。
画像の回転して表示する処理が必要なのでOpenGLを利用します。

今回の開発環境は次の通りです。
・64bit版 Windows8
・32bit版 Eclipse3.7 (Windows XPモードで使用)
・Android-SDK r22.3

針の画像です。
左から秒針、分針、時針のつもりです。
針の画像それぞれのピクセル数は32×128です。OpenGLで扱う画像なので128×128ピクセルにしたかったので一番右の黒い塗りつぶしの領域は使用しません。

Eclipseのパッケージ・エクスプローラーで、プロジェクトの res フォルダーの下に
drawable-nodpi
というフォルダーを作り針の画像を配置します。

以下ソースです。

アクティビティ(MainActivity.java)

※特別な権限(Permission)は不要なのでマニフェストは省略します。
Target SDK Version が4以上の設定でビルドできます。
Android1.6以降で動作します。
SH-03C(実機)、Android-SDK付属のエミュレーター、Blue Stacksで動作することを確認しています。

動作保証はできませんがとりあえず動作するようです。
SH-03Cで実行してみた画像です。
針の角度は1秒ごとに変化するようにしました。

これだけだと現在時刻が分かりにくいですね。
針の画像をかっこよくしたり文字盤の画像を追加すると実用性が上がるかもしれません。

関連ブログ
[Android] ストップウォッチアプリの表示をC言語でスムーズに改造する
[Android] ストップウォッチアプリを作ってみました
[Android] 方位センサーを使ってコンパスアプリを作る
[Android] OpenGLでプロ生ちゃんをアニメーションさせる
[Windows8][Android] Can't bind to local 8600 for debugger
[Android] 端末の傾きに立方体を連動させる
[Android] フリーサイズの画像をOpenGLのテクスチャに表示する
[Android] Android-NDKでテクスチャを表示するには
[Android] OpenGLで頂点の多いポリゴンを扱うには

以上、参考になれば幸いです。

2013年12月22日日曜日

プログラミング生放送 2013年12月21日

2013年12月21日のプロ生に参加させて頂きました。
上の写真は会場で披露されたプロ生ちゃんケーキです。
当日はライトニングトークをさせて頂きました。ご静聴頂きありがとうございました。
そのデモに使ったAndroidアプリケーションのソースを用意しました。
http://www.fujiu.jp/archives/PronamaDemos20131221.zip

次の環境での開発しました。
・Windows8 (64bit)
・Eclipse3.7 (32bit)(XP互換モードで起動)
・Android SDK r22.2

アプリの元ネタはこちらです。
[Android] OpenGLでプロ生ちゃんをアニメーションさせる

関連ブログ
[プロ生ちゃん壁紙] 壁紙のギザギザ(ジャギー)を直すには
[プロ生ちゃんボイス] wavファイルの書き出しは要注意
[Android] EclipseをXP互換モードで起動する理由

初音ミク達が音声案内するAndroidアプリを公開中です!
頭痛・肩凝り予防のストレッチを支援 Eye元気!2

以上、参考になれば幸いです。

2013年12月21日土曜日

[VOCALOID] 他社ボーカロイド・外国語ボーカロイドに対応したピアプロスタジオ

Piapro Studio 1.2.0 can handle VOCALOIDs of other vendors
Piapro Studio1.2.0が公開されました。このバージョンからKAITO V3・初音ミクV3以外のボーカロイドが扱えるようになりました。
早速使ってみたので結果をまとめてみました。

環境は次の通りです。
・Windows8 64bit
・ピアプロスタジオ1.2.0 64bit

ピアプロスタジオはVSTプラグインなのでホストアプリケーションとなるDAWなどが必要です。ホストアプリケーションの一例として、KAITO V3や初音ミクV3付属のStuidoOneや VST Host などがあります。
なお、現在たくさんのボーカロイドが発売されてますが今回試したのはほんの一部ですのでご了承ください。

ピアプロスタジオの入手条件

このブログを書いている時点では『KAITO V3』、『初音ミク V3』をライセンス登録しているユーザーか、『初音ミクV3 ENGLISH』のダウンロード版を購入したユーザーなら無料で入手できるようです。

クリプトン製以外のVOCALOID3ライブラリー(歌手)を使ってみる

クリプトン以外のボーカロイドをピアプロスタジオで扱うにはSONICWIREから「アクセスキー」を入手する必要があります
SONICWIREのユーザー登録はクリプトンに登録したユーザー情報の使い回しができません。
SONICWIREにユーザー登録したことがなければ新規に手続きが必要です。
画面のボタンをクリックするとブラウザーが起動しSONICWIREへのログイン画面が表示されます。
ログインして使用許諾を承諾するとと360文字ほどのアクセスキーが発行されます。コピー貼り付けで入力すると無事使えるようになりました。
アクセスキーの発行は無料でした。
また、他社ボーカロイドの顔グラフィックは用意されてませんが自分で差し替えることが可能です。

VOCALOID2は使えるか?

ピアプロスタジオでVOCALOID2を扱うには、VOCALOID3 Editorかボカキュー(VOCLAOID Editor for CUBASE)に付属のライブラリーインポートツールでVOCALOID3にインポートする必要がありますクリプトンが販売する鏡音リンレンや巡音ルカはアクセスキーが不要でした。
他社製VOCALOID2ライブラリーはVOCALOID3にインポートし、アクセスキーを入手すれば使えます。

中国語のVOCALOID3は使えるか?

ピアプロスタジオは公開当初から日本語と英語のボーカロイドライブラリーに対応しています。バージョン1.2.0のマニュアルにもそのように書かれています。
他の言語はどうなるのか試してみました。

まずは他社製中国語ボーカロイド「洛天依」のアクセスキーを登録します。
中国語のためか、デフォルトの歌詞が啦[a]と入力されます。啦は「ら」と発音するようですが発音記号は[a]のままです。
ところが「ni hao」と入力しても「ニーハオ」になりません。
もちろん「你好」と入力してもダメでした。
バージョン1.2.1で中国語に対応しました。ピンインの入力で発音します。

韓国語のVOCALOID3は使えるか?

バイリンガルのSeeUは日本語ライブラリーと韓国語ライブラリーのそれぞれのアクセスキーが必要です。
韓国語のデフォルトの歌詞は라[a]と表示されます。라の発音は「ら」のはずですがなぜか発音記号は[a]のままです。
はんぐる文字を入力しても[a]しか発音しません。入力したはんぐる文字も文字化けしているように見えます。
バージョン1.2.1で韓国語に対応しました。はんぐるの入力で発音します。

まとめ

・無料
・入手方法に制限あり
・各言語に対応
・他社製ボーカロイドの使用はSONICWIREが発行するアクセスキーが必要
・VOCALOID2を使えるようにするためのライブラリーインポートツールは付属しない

初音ミク達が音声案内するAndroidアプリを公開中です!
頭痛・肩凝り予防のストレッチを支援 Eye元気!2

ミク日本語のみ
ミク日本語と英語

関連ブログ
ピアプロスタジオ 64bit版 [VOCALOID][CUBASE]
[VOCALOID] ピアプロスタジオをStudioOneなしで起動する
初音ミクV3とピアプロスタジオ
KAITO V3 とピアプロスタジオ
[VOCALOID] 洛天依が届くまで
[VOCALOID] 洛天依を歌わせるには

以上、参考になれば幸いです。

2013年12月14日土曜日

[Unity3D] MonoDevelopのテキストエディターを使いやすくする

Unityの最新バージョンをインストールしたら付属のMonoDevelopのバージョンが上がってました。
その影響でエディターの設定が変わってしまいました。

毎回設定箇所を探すのに時間がかかるの自分好みの設定をまとめてみました。

MonoDevelopを起動してメニューの
Window - Options
をクリックして設定画面を開きます。

フォントの種類・大きさの設定

Environment - Fontsです。

カーソルがある行をハイライトで強調する

Text Editor - Makers and Rulers

Hilight current lineです。

TABや改行を記号で表示する

Text Editor - Makers and Rulers

Show invisible characters を Always に変更します。

クラス名やメソッド名のブレース{}を改行させない(C#)

左側、Source Code - Code Formatting - C# source codeを選択し
右側、C# FromatのEditをクリックします。
※下のスクリーンショットは既に設定済みの状態です。
Edit Profile画面が表示されるのでCategoryからBraceを選択します。
画面左半分のすべての項目を「End of line」に変更します。

他にもたくさん項目がありますし、Mtkの好みの設定なのですべておすすめというわけではありませんが、設定次第で効率を上げることが出来ると思います。

おまけ

ソースコードを上書き保存するとカーソルが勝手に1行目に移動してしまう怪現象

ソースコード編集中に上書き保存するとカーソルが1行目に移動してしまうことがあります。
カーソル移動に合せて画面もスクロールしてしまいとても困ります。
ソースを開いているタブを×ボタンクリックで閉じ、もう一度開きなおすと一時的に直るようです。
参考情報
http://answers.unity3d.com/questions/574075/monodevelop-401-unity-43-code-folding-bug.html


以上、参考になれば幸いです。

2013年12月6日金曜日

CUBASE7.5をインストールしました [VOCALOID][ ピアプロスタジオ]

CUBASEを7から7.5にバージョンアップしました。
バージョンアップする前から気にある点がいくつかあったのでまとめてみました。

環境は次の通りです。
・Windows8 64bit
・CUBASE7.5 64bit

インストール方法

1.
eLicenser Control Centerの最新版をダウンロードしてインストールします。
http://japan.steinberg.net/jp/support/downloads/elcc.html
PC本体のBIOSや、USBオーディオインターフェイスやMIDIキーボード等の周辺機器のデバイスドライバー、Windows Updateの修正モジュールなども最新をインストールしておくことをおすすめします。

2.
eLicenser Control Centerを起動してアクティベーションコードの入力をします。

3.
CUBASE7.5のインストーラーディスクからインストールします。
ちなみにバージョンアップを申し込んで送られてきたのはアクティベーションコードとHALion Sonic SE2 のインストールディスクのみです。
CUBASE7.5本体はインターネット経由でダウンロードしインストールします。

ロジカルエディターやMIDIインサートプラグインのプリセットがない

C:\Program Files\Steinberg\Cubase 7.5\Presets
のファイルをサブフォルダーごと
C:\Users\ログインユーザー名\AppData\Roaming\Steinberg\Cubase 7.5_64\Presets
にコピーします。

「ファイル名を指定して実行」か「コマンドプロンプト」に次のコマンドを入力し実行すればあっという間に終わります。
xcopy "C:\Program Files\Steinberg\Cubase 7.5\Presets" "%USERPROFILE%\AppData\Roaming\Steinberg\Cubase 7.5_64\Presets" /T /E /I
※「xcopy」から「/I」まで1行で入力してください。


インストールは以上です、以下は新機能(一部)のチェックです。

CUBASE7.5とCUBASE7は共存

CUBASE7がインストール済みのPCにCUBASE7.5をインストールすると、それぞれ使用できます。
7.5で追加されたGrrove Agent SE 4は7でも使えました。
6から6.5へのバージョンアップは上書きだったのでちょっと驚きです。


ボカキュー(VOCALOID Editor for CUBASE)は使えるか?

7.5でも ボカキュー は使えました。


HALion Sonic SE 2のプログラム(音色)は増えたか?

CUBASE7.5ではHALion Sonic SEがバージョンアップ版「HALion Sonic SE 2」に上書きされます。
プログラムの数を比較してみました。
Library Name
HALion Sonic SE 2
HALion Sonic SE
Artist
406
406
Basic
185
185
Hybrid
300
300
Pro
366
366
Trip
153
0
前バージョンにはなかったバーチャルアナログシンセサイザーTripのプリセットが増えました。


HALion Sonic SE 2のエクスプレッション(アーティキュレーション・奏法のサンプル)は増えたか?

増えてませんでした。
前バージョンのHalion Sonic SEの「Sloid Gutar VX」というプログラムには8種類のエクスプレッションがありますが、2でも同じです。
なお、単体製品として「HALion Sonic 2」(SEがつかない)が発売されています。この製品は買ってないのですがマニュアルを見るとエクスプレッションが増えているようです。
「Strat Guitar XXL」というプリセットのスクリーンショットですが、左上赤枠内のEXPRESSIONSを見ると6種類のエクスプレッションが表示されています。
スクロールバーのサイズから推測するとEXPRESSIONSはさらに下に続いており、10種類くらい選べるように見えます。
製品版とは別物のようです。


追加したInstrument SetはHALion Sonic SE 2で使えるか?

過去に「HALion Symphonic Orchestra VST Instrument Set」というHALion Sonic SE用オプションを追加購入しました。
このオプションはHALion Sonic SE 2」で使えました。

HALion Sonic SE 2はTripとエフェクターが追加された以外ほとんど変わってないので戸惑うことはありませんでした。


LoopMash FXは何ができる?

CUBASEはだいぶ前のバージョンから「LoopMash 2」というプラグインが付属しています。
LoopMash 2はオーディオのサンプルを特定のルールでスライスして並び替えるサンプラーでした。
7.5で追加された「LoopMash FX」はLoopMash 2とは全く異なるエフェクトプラグインです。
オーディオトラックを徐々にピッチダウンするテープストップやダブステップでよく使われる(?)スタッターが簡単に表現できます。
前バージョンまでは同じことをするには、音源をオーディオトラックに変換してピッチエンベロープ処理したりスライスして並べ替えたりと、とても手間がかかりました。
「LoopMash FX」はエフェクトとしてインサートしMIDIやオートメーションで処理できます。


Groove Agent SE 4

現在は販売が終了している製品「Groove Agent 3」はドラム音源でした。
CUBASE7.5では「Groove Agent SE 4」というVSTプラグインが付属します。
これは「Groove Agent 3」のようなドラム音源ではなく、前バージョンに付属していたGroove Agent ONEのようなサンプラーです。
Groove Agent SE 4はGroove Agent Oneと共存します。Groove Agent Oneは上書きされません。
プリセットは相変わらずドラム中心です。
個人的には最大の変更箇所だと思ったのが「Mute Gr.(ミュートグループ)」が「Excl」という名前に変わったことです。(どこを探しても見つからないと思ったら名前が違うのだから見つかるはずがありません)
Groove Agent ONEのサンプル編集機能はピッチシフトとフィルター程度でしたが、「Groove Agent SE 4」ではエンベロープをかけたりサンプルを再生する範囲の指定などができるようになりました。
ピッチをランダマイズできるのでトリッキーな音作りができそうです。
その他タイムストレッチできたりエフェクトが内蔵されたりMIDIシーケンスの再生ができたり、と大幅に機能が強化されました。


Instrument (T)rack 2.0 の利便性は?

マルチティンバー音源をパラレルアウトプットで使用するには 「VSTインストゥルメント」を使用するわけですが、は表示が殺風景なうえインストゥルメントと各トラックのつながりが分かりにくいのが難点でした。
下の画像は前バージョンのものです。
CUBASE7.5ではトラックの種類にかかわらずプロジェクト内で使用しているVSTインストゥルメントはすべてVSTインストゥルメントウィンドウに表示されるようになりました。
検索機能もついてます。
ピアプロスタジオ のようにマルチアウト(パラレルアウト)のVSTiもインストゥルメントトラックでフルに活用できるようになりました。
設定の手間は相変わらずですが「操作したいトラックがどれだか分からない」ということは少なくなりそうです。
それにしても「出力を有効 (Activate Outputs)」とはCUBASEの難しさを感じる言葉です。マニュアルを読むまでさっぱり分かりませんでした。
「出力を有効」をクリックして設定するとインストゥルメントトラックの2チャンネル目以降の音源が扱えるようになります。


CUBASE7でLoopMash FX、REVelation、Magnet IIを使うには (動作保証外)

CUBASE7 と CUBASE7.5 の両方をインストールておきます。
C:\Program Files\Steinberg\Cubase 7.5\VST3
にある
LoopMash FX.vst3

Cubase Plug-in Set.vst3

C:\Program Files\Steinberg\Cubase 7.5\VST3
にコピーするのですが、後者は同じ名前のファイルが既に存在するので上書きすることになります。不具合があったら戻せるように上書き前のファイルをバックアップしてください。
ファイルコピー後、デバイス - プラグイン情報 を開いて更新ボタンをクリックしてください。


裏技 (動作保証外)

CUBASE7と同様、旧バージョンからアップデートした場合はHALion Oneが、Windows版ならさらにMonologue、Embracer、Tonicが使えます。
詳しくは [CUBASE] CUBASE7のインストールとトラブル にて。

他にも沢山の変更点がありました。人それぞれですがバージョンアップして良かったと思ってます。


関連ブログ
[CUBASE] CUBASE7のインストールとトラブル
[CUBASE] CUBASE6のバージョンアップのトラブル
[CUBASE] スペクトルモニターの精度
[CUBASE] 「突然音が出なくなった」を解決する
[Windows] オーディオ再生中にノイズが鳴る
[CUBASE][StudioOne] wavファイルの書き出しは要注意
[VOCALOID][StudioOne] 初音ミクV3とピアプロスタジオ
[VOCALOID][StudioOne] KAITO V3 とピアプロスタジオ
[VOCALOID][CUBASE] ピアプロスタジオ 64bit版
[VOCALOID][CUBASE] VOCALOID Editor for CUBASE(ボカキュー)で何が変わるか?
[VOCALOID Editor for CUBASE] ボーカロイドをMIDIキーボードで入力する
[VOCALOID] CUBASEで「ぼかりす」(VocaListener)っぽいことをする

以上、参考になれば幸いです。

2013年11月30日土曜日

[Playstation] DUALSHOCK3の電源が入らなくなったら

How to recover the unresponsive DUALSHOCK3
先日のことですが、数時間前まで使っていたDUALSHOCK3の電源が入らなくなってしまいました。
PSボタンを長押ししようがUSBケーブルでPS3本体と接続しようがLEDランプが光りません。
買って3ヶ月しか経ってなかったのでとてもショックでした。

ですが故障ではなかったのか、意外と簡単に直ったのでそのときの手順をまとめてみました。

1.
本体裏側のリセットボタンを針のような細長いもので押します。
隣のねじ穴と間違えないように注意。
この時点では何反応もありません。

2.
DUALSHOCK3とPS3本体をUSBケーブルで接続します。
これでDUALSHOCK3のLEDランプが光れば故障ではありません。

3.
DUALSHOCK3のPSボタンを押します。
これで復活しました。

なぜリセットが必要になったのか?
DUALSHOCK3はバッテリーとモーターを内蔵し、USBインターフェイスとBluetoothによる双方向通信機能を備えています。
さらに外観からは分かりませんがこれらのハードウェアを制御するためのソフトウェアも内蔵しているはずです。
バッテリーの過充電を防止したりボタン入力状態をPS3本体に送信したり、PS3から受信したタイミングでモーターを回したり止めたりなど
今回の件はソフトウェアがハングアップしてしまったためうんともすんとも言わなくなってしまったのだと思います。

電源が入らなくなったり、正常動作しないDUALSHOCK3があったら一度リセットボタンを押してみることをおすすめします。

以上、参考になれば幸いです。

2013年11月23日土曜日

[JavaScript] テキストボックスやボタンの幅を変えるアニメーション

JavaScript for widgets Animations
JavaScriptでテキストボックスを伸縮させるのWebコンテンツを作ってみました。

次の環境で動作確認しました。
・32bit版Windows7のInternet Explorer10
・64bit版Windows8のInternet Explorer10
・Windows8のFirefox25

これはテキストボックスは通常の大きさです。
このテキストボックスにカーソルをフォーカスすると幅がグイーンと伸びます。
カーソルを移動してフォーカスを失うとアニメーションしながら元の幅に戻ります。

以下ソースです。

stretchElement関数が今回のスクリプトです。
第1引数 : 要素のID名
第2引数 : アニメーション開始時の横幅(px単位)
第3引数 : アニメーション終了時の横幅(px単位)
第4引数 : 10ミリ秒あたりの変化量(px単位)。大きければ速く、小さければ遅くアニメーションします。

使い方はこのようになります。
<input
  type="text"
  id="txt1"
  onfocus="stretchElement('txt1', 200, 400, 8);"
  onblur ="stretchElement('txt1', 400, 200, -8);"
  style="width: 200px;" />

onfocus="stretchElement('txt1', 200, 400, 8);"
が「フォーカスされたら200pxから400pxに伸びる、10ミリ秒あたり8pxの幅で」という意味になります。

onblur ="stretchElement('txt1', 400, 200, -8);"
は「フォーカスを失ったら400pxから200pxに縮む、10ミリ秒あたり8pxの幅で」という意味です。

テキストボックス以外にも適用できます。
たとえば
<input type="button"
  id="btn1"
  onmouseover="stretchElement('btn1', 200, 600, 24);"
  onmouseout ="stretchElement('btn1', 600, 200, -24);"
  style="width: 200px;" value="伸縮するボタン" />
と書けば、マウスポインターを重ねるたびに伸びたり縮んだりするボタンができます。


改善の余地はありますが、ホームページのソースをHTML5に置き換える作業をしていて何となく思いついたので書いてみました。

以上、参考になれば幸いです。

2013年11月16日土曜日

[Android] ストップウォッチアプリの表示をC言語でスムーズに改造する

The simple stopwatch application for Android
前回のストップウォッチアプリ は、経過時間の表示がカクカクになることがあります。

経過時間の文字列を表示するため Handler#handleMessage メソッドの中で
ByteArrayOutputStram

PrintStream
のインスタンスが1秒間に数十回メモリーのヒープと呼ばれる領域に確保されます。表示後はインスタンスが不要になります。
Javaの仕様により不要になったインスタンスがある程度たまるとヒープから解放する処理が行われます。
(解放されたメモリーは別のインスタンスの確保などに再利用されます)
この処理はGC(ガーベジコレクター、ガーベジコレクション)というものですが、GCの処理は意外と時間がかかるようです。
Android OSのバージョンにもよりますが、GCが完了するまでそれ以外の処理は一時停止されます。

前回のアプリは数秒ごとにGCが発生するため表示がカクカクする原因になっていました。
そこで表示をスムーズにする方法を考えてみました。

C言語ではメモリーの解放処理をプログラムする必要がありますが、GCの対象にはならないので表示をスムーズにできると予想できます。
その結果、経過時間の文字列はJavaではなくAndroid-NDKによるC言語で処理することにしました。

このブログを書いている時点の開発環境は次の通りです。
・Windows8 (64bit)
・Eclipse Juno (32bit)(XP互換モードで起動)
・Android SDK r22.2
・Android NDK r9

以下ソースです。
MainActivity.java (アクティビティ)

※初期化漏れがあったので修正しました。2014年6月16日

jni.cpp


Android.mk


※特別な権限(Permission)は不要なのでマニフェストは省略します。
Target SDK Version が4以上の設定でビルドできます。
Android1.6以降で動作します。
Android-NDKのビルド方法は環境に強く依存するので省略させて頂きます。
SH-03C(実機)とBluestacks(エミュレーター)で動作することを確認しています。

動作保証はできませんが最低限の動作はするようです。
前回に比べてレイアウトを少し変更してます。
アプリ動作中のスクリーン消灯もオフにしています。

GCの頻度を減らしただけですがJavaだけで作ったアプリに比べてかなりスムーズになりました。
今回のC言語のプログラムはスタック変数しか使ってないので解放処理が不要でした。

Javaはメモリーの解放処理が(完全ではないものの)GCにより自動化されているため、プログラムしやすい言語です。
その反面、GCを完全になくすことはできません。
AndroidアプリでGCを減らしたい場合、GCが多発する処理をAndroid-NDKによるC言語でプログラムするのもいい方法だと思います。

関連ブログ
[Android] ストップウォッチアプリを作ってみました
[Android] Javaのstaticクラス(Handler)から非sataticクラス(Activity)のメソッドを呼び出すには(弱参照)
[Android] PrintStream#printfの最適化(SDK r08でのエラーを別の方法で解決する)
[Android] ライブ壁紙の作り方
[Android] 方位センサーを使ってコンパスアプリを作る
[Android] OpenGLでプロ生ちゃんをアニメーションさせる
[Windows8][Android] Can't bind to local 8600 for debugger

以上、参考になれば幸いです。

2013年11月9日土曜日

[Android] ストップウォッチアプリを作ってみました

The simple stopwatch application for Android
ストップウォッチのAndroidアプリを作ってみました。

このブログを書いている時点の開発環境は次の通りです。
・Windows8 (64bit)
・Eclipse Juno (32bit)(XP互換モードで起動)
・Android SDK r22.2

アクティビティ(MainActivity.java)

※特別な権限(Permission)は不要なのでマニフェストは省略します。
Android1.6以降で動作します。
Target SDK Version が4以上の設定でビルドできます。
SH-03C(実機)とBluestacks(エミュレーター)で動作することを確認しています。

動作保証はできませんが最低限の動作はするようです。
なぜかBlueStacksでは1000分の1秒の位が常にゼロで表示されます。

Playストアにはスタイリッシュなストップウォッチのアプリが沢山ありますが自分で作ってみるのも楽しいです。

関連ブログ
[Android] Javaのstaticクラス(Handler)から非sataticクラス(Activity)のメソッドを呼び出すには(弱参照)
[Android] PrintStream#printfの最適化(SDK r08でのエラーを別の方法で解決する)
[Android] ライブ壁紙の作り方
[Android] 方位センサーを使ってコンパスアプリを作る
[Android] OpenGLでプロ生ちゃんをアニメーションさせる
[Windows8][Android] Can't bind to local 8600 for debugger

以上、参考になれば幸いです。

2013年11月2日土曜日

[Android] Toastのフォントを変えるには

How to change font styles on Toast
Toastは画面に文字をオーバーレイ表示するのによく使われます。
過去のブログ [Android] Toastに画像やボタンを表示するには では文字以外に画像やボタンを表示する方法を書かせて頂きました。

この機能を応用してTextViewを表示すれば、Toastに表示する文字の大きさや色を変えることができます
今回はToastに赤い大きな文字を表示するサンプルを作ってみました。

このブログを書いている時点の環境は次の通りです。
・Windows8 (64bit)
・Eclipse Indigo SR2 (32bit)
・Android-SDK-r22.0.4

以下ソースです。

アクティビティ(MainActivity.java)

※特別な権限(Permission)は不要なのでマニフェストは省略します。
Target SDK Version が4以上の設定でビルドできます。
Android1.6以降で動作します。

Android-SDK付属のエミュレーターで実行するとこうなります。
解像度やフォントの種類によって見え方が異なることがありますのでご了承ください。

関連ブログ
[Android] Toastに画像やボタンを表示するには
[Android] SurfaceviewにToastを表示するには
[Android] Toastをcancelするには
[Android] OpenGLでプロ生ちゃんをアニメーションさせる
[Android] 端末の傾きに立方体を連動させる
[Android] 方位センサーを使ってコンパスアプリを作る
[Android] Javaのstaticクラスから非sataticメソッドを呼び出すには
[Android][Windows8] Can't bind to local 8600 for debugger
[Android] Android-SDKでやってはいけないこと
[Android] ライブ壁紙の作り方
[Android] Activityに時計を表示する(Activityの非同期更新)

以上、参考になれば幸いです。
n

2013年10月26日土曜日

wavファイルの書き出しは要注意 [CUBASE][StudioOne]

Attention to exporting wav files
拡張子の「wav」は一般的に音声ファイルに使われます。
wavファイルはメタ情報を含むことができ、メタ情報の内容により WAVBroadcast Wave Format に区別されるようです。

WAV (ウィキペディア)
http://ja.wikipedia.org/wiki/WAV
Broadcast Wave Format (ウィキペディア)
http://ja.wikipedia.org/wiki/Broadcast_Wave_Format

この2種類のフォーマットはメタ情報が異なりますが拡張子が同じなので簡単には区別できません。
どちらもWindows Media Playerで再生することができるので区別する必要がないように思えます。

ところが一部のBroadcast Wave FormatファイルはWindows サウンド設定で再生できない問題があるようです。
プロ生ちゃん音声が Windows サウンド設定で再生されない問題
http://pronama.azurewebsites.net/2013/09/09/sound/

※ 特定の製品について宣伝や中傷をするものではありません。


CUBASE や StudioOne で書き出したファイルは再生できる

CUBASE7ではミックスダウンの書き出し画面でBroadcast Wave Formatとしてファイルを書き出すことができます。
blog.fujiu.jp wavファイルの書き出しは要注意
StudioOne2.6はソング設定からメタ情報の設定ができますが、wavファイルは必ずBroadcast Wave Formatとしてエクスポートされるようです。
CUBASE7 や StudioOne2.6 で書き出したBroadcast Wave Formatのファイルはサウンド設定で再生することができました。

Windowsサウンド設定で再生できなかったファイルはProToolsで書き出されたようでした。
ProToolsのバージョンやエディション、動作環境などはすべて不明です。


なぜWindowsサウンド設定で再生されないのか

プロ生ちゃん音声がWindowsサウンド設定で再生できない原因は不明です。
ですがyouandiさんの日記でPlaySound関数で再生できないことが指摘されています。
プロ生ちゃんの音声がWindows サウンド設定で再生されない問題 - 桜、抹茶、白、日記
http://d.hatena.ne.jp/youandi/20130911/p1

さらにウィキペディアのRIFFの項目に興味深いことが書かれています。
http://ja.wikipedia.org/wiki/RIFF
情報源は不明ですがこのブログを書いている時点では「マイクロソフトのRIFFに関する文書は分散していて把握しきれないことも多く...」とのことです。

手元にProToolsがないので検証することができませんがProToolsのメタ情報かPlaySound関数のどちらかに不具合があるのかもしれません

2015年8月、Protools Firstで検証できました。
ProTools First のwavファイルはPlaySound関数で再生できるか?


Broadcast Wave FormatをWAVに変換する方法

Broadcast Wave Formatファイルのメタ情報を最小限にしてしまえばWAVファイルと同じになるはずです。
フリーウェアのSound Engine Freeが簡単です。
Broadcast Wave Formatのファイルをwavファイルとして保存し直せば変換できます。
Sound Engine Freeのダウンロードはこちらから
http://soundengine.jp/software/soundengine/
CUBASE7でも可能です。
「オーディオミックスダウン書出し」画面でWaveファイルのファイル形式を選び
オフ - Broadcast Waveチャンクを挿入
オン - Wave拡張フォーマットを使用しない
オフ - iXMLチャンクを挿入
オフ - テンポ設定を挿入
の設定で書き出すと変換できます。


WAV と Broadcast Wave Format を区別する方法

バイナリーエディターで開いてメタ情報に bext という文字列があればBroadcast Wave Formatです。(ウィキペディアが正しければ)
CUBASE7ならもっと簡単です。
Media Bayの結果リスト(Search Results)セクションの「File Type」(初期設定では一番右の列)に表示されます。
ちなみにStudioOne2.6 Artist はWAVとBroadcast Wave Formatの表示の区別はないようです。どちらも「Waveファイル」と表示されます。

wavファイルがこんなに複雑だとは知りませんでした。他にも不都合があるかもしれません。
配布目的のwavファイルを書き出すときはサンプリングレートやビット深度のほかメタ情報にも要注意です。


関連ブログ

[Android] SoundPoolのオーディオ再生ミスをなくす
[Unity] オーディオの音量が小さい
[Windows] オーディオ再生中にノイズが鳴る、途切れる
[PlasStation Mobile] オーディオファイルを再生するには

以上、参考になれば幸いです。