お世話になっております。
分からないことがあり、質問させて頂きました。
3日以上悩んでおり全然進まない為、お知恵をお借りできたらと思います。
前提・実現したいこと
現在選択しているマイクの音量を
自動で取得したいと思っています。
OS上のマイク最大値と
現在マイクに入っている声の大きさを数字で表示したいと思っています。
試したこと
上記リンクを参照し、コンボボックスにマイクの名称を
表示するところまでは進めることが出来ました。
困っている事
録音する必要は一切なく、
OS上のボリューム最大値と、現在の声の大きさを数値で表したいです。
参考:AudioSourceの簡単なサンプル - マイク入力をメータにして表示する
上記のようなメーターです。
メーター(プログレスバー)に手を付けるのは早いと思ったので、
とりあえず数字で表そうと思っています。
【Youtube】NAudio - C# Show Device master peak in realtime
上記リンクもやりたい事に近いのですが、
ソースをそのまま利用しても上手くいきませんでした。
NugetでNAudioを参照しているからでしょうか。
C#
1using NAudio.Wave; 2using NAudio.CoreAudioApi; 3//他にもあるけど省略 4 5 public partial class MainWindow : Window 6 { 7 public MainWindow() 8 { 9 MMDeviceEnumerator enumerator= new MMDeviceEnumerator(); 10 var devices=enumerator.EnumerateAudioEndPoints(DataFlow.All,DeviceState.Active) 11 comboBox1.Items.AddRange(devices.ToArray()); 12 13 14 private void timer_Tick(object sender,EventArgs e) 15 { 16 var device=(MMDevice)combobox1.SelectedItem; 17 progressBar1.Value=(int)(Meth.Round(device.AudioMeterInformation.MasterPeekValue * 100)); 18 } 19 } 20}
上記のようなコードを書いていました。
丸々コピペして作ってみましたが、MMDeviceでドライバーが取得できず
エラーになってしまいます。deviceがnullになります。
private void timer_Tick(object sender, EventArgs e) { if (MyComboBox.SelectedItem != null || string.IsNullOrEmpty(MyComboBox.Text) == false) { MMDeviceEnumerator devices = new MMDeviceEnumerator(); string deviceName = MyComboBox.SelectedItem.ToString(); device = devices.GetDevice(deviceName); MyLabel.Content=(int)(Math.Round(device.AudioMeterInformation.MasterPeakValue * 100)); } }
###現在試そうとしてること
Unityで既定以外の録音デバイスを使う(口パク)
上記が参考になりそうなので、利用しない部分を排除して
動くかどうか試してみようと思っていますが
上手くいかず難航しています。
補足情報(FW/ツールのバージョンなど)
VisualStudio2019
Windows10
.NET4.5
この質問の投稿者はすでに退会しているため、質問者からの返信がない点にご留意ください。
回答1件
この質問の投稿者はすでに退会しているため、質問者からの返信やベストアンサーの選定がない点にご留意ください。
あなたの回答
tips
プレビュー
退会済みユーザー
2020/09/16 00:02