質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

Q&A

0回答

2228閲覧

UnityでビルドしたAndroid用アプリにマイク入力機能を導入しているんですが、入力の際に遅延が発生してしまうのでその遅延を消したいです。

puttinnsinnpu

総合スコア10

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

0グッド

0クリップ

投稿2019/11/25 12:03

編集2019/11/25 14:38

現在UnityでAndroidアプリを作成していて、機能の一つにスマホのマイクから取得した音をトリガーにオブジェクトの色を変えるというプログラムを作成しています。

参考にしたサイトはこれです。↓
https://qiita.com/ELIXIR/items/ff503d48c24092c05843

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ifClap : MonoBehaviour { [SerializeField, Range(0f, 20f)] float m_gain = 1f; // 音量に掛ける倍率 float m_volumeRate; // 音量(0-1) // Use this for initialization void Start() { AudioSource aud = GetComponent<AudioSource>(); if ((aud != null) && (Microphone.devices.Length > 0)) // オーディオソースとマイクがある { string devName = Microphone.devices[0]; // 複数見つかってもとりあえず0番目のマイクを使用 int minFreq, maxFreq; Microphone.GetDeviceCaps(devName, out minFreq, out maxFreq); // 最大最小サンプリング数を得る aud.clip = Microphone.Start(devName, true, 2, minFreq); // 音の大きさを取るだけなので最小サンプリングで十分 aud.Play(); //マイクをオーディオソースとして実行(Play)開始 } } // Update is called once per frame void Update() { if (m_volumeRate > 0.75f)//ある程度大きい音を検出するとランダムな色に変わる { Color randomColor = new Color(Random.value, Random.value, Random.value, 1.0f); this.GetComponent<Renderer>().material.color = randomColor; } } // オーディオが読まれるたびに実行される private void OnAudioFilterRead(float[] data, int channels) { float sum = 0f; for (int i = 0; i < data.Length; ++i) { sum += Mathf.Abs(data[i]); // データ(波形)の絶対値を足す } // データ数で割ったものに倍率をかけて音量とする m_volumeRate = Mathf.Clamp01(sum * m_gain / (float)data.Length); } }

PC上でこのプログラムをテストする分には、ラグが発生せずオブジェクトの色が変化するのですが、Android上で動かしてみると、1~2秒ほどのラグが発生してしまいます(複数の端末でテストしたところ、すべての端末でラグが発生しました)。

 このラグをなくすためにAudioManagerの設定のDSP Buffer Sizeをいじってみたのですが、それでもうまくいきません。Unity上の設定の見直し、またコードの見直しがあれば教えて欲しいです。

また、ラグを発生させずにオブジェクトの色を変化させられる場合もありました。その方法が一度アプリをバックグラウンドの状態にし数秒経過させたのちに、アプリをバックグラウンドから復帰させるとラグがなくなるというものです(なぜこうなるかは全くわかりません)。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問