カテゴリー別アーカイブ: プログラミング

AVAudioEngine

iOS8からAVAudioEngineという新たなオーディオの機能がAVFoundationに追加されました。AVAudioEngineというのはAUGraphのObjective-C版のような感じのものです。オーディオのプレイヤーやエフェクトやミキサーなどがNodeと呼ばれる部品で用意されていて、それらを繋いで音を鳴らす事が出来ます。 AUGraphよりもかなり簡単に使えるようになっているのですが、その反面、AUGraphを使うときのように細かい設定が出来るわけではなかったり、AUGraphで出来た事が出来なかったりする部分もあるので、いままでAUGraphを使っていた人にとっては物足... read more

mediaServiceWereResetNotificationが呼ばれるタイミング

AVAudioSessionのmediaServiceWereResetNotificationですが、たまたま確実に呼ばれるタイミングを見つけられたのでメモしておきます。 1、AudioSessionのCategoryをAVAudioSessionCategoryMultiRouteにする。 2、iPad本体にヘッドホンを接続し、Lightning端子に外部出力を接続する。 3、ヘッドホンとLightningケーブルを同時に素早く抜き取る。 LightningやiPadと書きましたが、たぶんDockケーブルやiPhoneでもMultiRouteな状態からケーブルを一気に引き抜けば同... read more

Multi Route Audio

iOS6からの機能なので今さら感がありますが、拙作のTouch the Waveでも導入したMulti Route Audioの使い方をまとめておこうと思います。 Multi Route Audioとは USBオーディオインターフェースやHDMIなどの外部出力を接続したときに、ヘッドホンへ別系統の音を出力できる機能です。外部出力2chとヘッドホン2chの計4ch出力する事が出来ます。残念ながらマルチイン・アウトが搭載されているオーディオインターフェースをマルチで使えるという機能ではなく、USBオーディオインターフェースはイン・アウト2chのみで、それとは別にヘッドホンにも別の音をだせ... read more

Unityでストップウォッチを作る その11 データの保存

Unityでストップウォッチを作るシリーズ半年ぶりの更新で、最後になります。今回はアプリを終了しても継続して計測できるようにデータを保存したいと思います。 Stopwatch.csに以下のコードを追加してください。ChangeState関数に関しては、最後に1行だけの追加になります。 // // Stopwatch.csの一部 // void Awake() {     Load(); } const string lastStopTimeKey = "LastStopTime";... read more

Unityでストップウォッチを作る その10 シェーダーを変更する

今回は、見た目でちょっと気になる所を修正したいと思います。 背景を黒くしているとあまり分からないのですが、試しに背景を白くしてみると目盛りのフチがやや黒ずんでいるのが分かります。特に針は輪郭がはっきり出ています。 このようにテクスチャ内の不透明な部分と透明な部分を補間した境目が黒ずんでしまうのですが、なぜ起きるのかについては以下のページで補間アルファの問題として丁寧に解説されていたので、気になる方は参考にしてみると良いと思います。 乗算済みアルファとは? その1:補間アルファの問題点 ちなみに、テクスチャの設定を「Billinear」から「Point」に変えて補間を効かなくすればなくなる... read more

Unityでストップウォッチを作る その9 リセットのアニメーション

今回は「RESET」の文字をアニメーションさせるのに加えて、画面全体の背景もタップしたときにアニメーションさせようと思います。そんなにこったものではなく、フェードさせたり回転させたりするくらいのものです。 「RESET」を表示するのに使っているTextMeshは、テキストにHTMLのようなタグを付けて1文字単位で色を変えたり装飾をしたりする事が出来ます。ですが、今回は文字列全体にしか色を指定しませんし、フェードさせたりもしたいので、文字列全体にタグをつける処理をするスクリプトを作ります。 新たに「ColoredText.cs」という名前でC#スクリプトをProjectウィンドウの「S... read more

Unityでストップウォッチを作る その8 リセットボタンを作る

今回はリセットボタンを作りたいと思います。ボタンと言ってもBigStopWatchではいかにも押せるような普通のボタンではないのですが、一応ボタンと表現しておきます。個人的にはリセットボタンの無い状態の方がスマートで好きなのですが、さすがにストップウォッチの機能として単純すぎるかなと思って機能を追加しています。ただ、そういう積算できないアナログのストップウォッチというのも存在しています。 オブジェクトの作成 リセットボタンを置くスペースを作りたいのでシーンの「Root」オブジェクトのPositionのXを「-60」にしてください。Gameウィンドウで見てこのくらいでしょうか。 新た... read more

Unityでストップウォッチを作る その7 「分」のサークルを作る

前回で「秒」を表示するサークルが出来上がりましたので、これをコピーして「分」のサークルも作ります。 オブジェクトの複製と設定 シーンの「SecTimeCircle」を選択した状態でコピー&ペーストをして複製します。新たに出来たオブジェクトの名前を「MinTimeCircle」と変更してください。 複製したオブジェクトはほぼそのまま再利用しますが、メッシュだけは変更します。Projectウィンドウで新たに2つメッシュを作ってそれぞれ「MinTimeCircleMesh」「MinNeedleMesh」と名前を変更し、「MinTimeCircle」とその中にある「Needle」オブジェク... read more

Unityでストップウォッチを作る その6 針を作る

今回はサークル上で計測時間を指し示す針を作っていきます。 スクリプトの追加と修正 まず、Projectウィンドウに「Needle.cs」という名前でC#スクリプトを作り、以下のコードをコピーしてください。 // // Needle.cs // using UnityEngine; using System.Collections; [ExecuteInEditMode()] [RequireComponent(typeof(MeshRenderer))] [RequireCompo... read more

Unityでストップウォッチを作る その5 サークルを動かす

今回は、前々回から作ってきた「TimeCircle」をストップウォッチの計測時間に合わせて動く様にしたいと思います。 スクリプトの追加と修正 新たに「AngleAnimation.cs」と「TimeCircleController」の2つのC#スクリプトを追加して以下のコードをコピーしてください。また、「BSWUtility.cs」と「Stopwatch.cs」も修正してください。修正と言っても各スクリプト内のコードは全部載せているのでマルっと上書きしてしまって大丈夫です。 // // AngleAnimation.cs // ... read more