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