CaptureSound Managed その3
1. 次は、Waveformatの選択画面です。
Main.csで、captureをnewした時
このnewされたcaptureには、パソコン内で、使用可能な、デバイスが、表示され
しかも、使用可能な、Waveformatが、bool型で、既に、決まっているようです。
これを使って、愚鈍にも、一つ一つ、ListBoxに追加しました。
private void my_enumulateDevices()
{
WaveFormat format = new WaveFormat();
Capture capt = mf.capture;
if (capt.Caps.Format11KhzMono16Bit)
listBox1.Items.Add("11KhzMono16Bit");
if (capt.Caps.Format11KhzMono8Bit)
listBox1.Items.Add("11KhzMono8Bit");
if (capt.Caps.Format11KhzStereo16Bit)
listBox1.Items.Add("11KhzStereo16Bit");
if (capt.Caps.Format11KhzStereo8Bit)
listBox1.Items.Add("11KhzStereo8Bit");
if (capt.Caps.Format22KhzMono16Bit)
listBox1.Items.Add("22KhzMono16Bit");
if (capt.Caps.Format22KhzMono8Bit)
listBox1.Items.Add("22KhzMono8Bit");
.........
そして、my_enumulateDevices()なるメソッドを作成。(この命名は、まちがっとるな...my_enumerateFormats かな?)
FormatsFormのコンストラクタに記述。
そして、メインフォームのメンバ、mfをFormatsFormに追加する所は
前回と、同じです。
public partial class FormatsForm : Form
{
private MainForm mf=null;
public FormatsForm(MainForm mf3)
{
InitializeComponent();
this.mf=mf3;
}
そんで、OKボタンが押されたとき
WaveFormatを、決定します。
private void button2_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
WaveFormat format = new WaveFormat();
int index = listBox1.SelectedIndex;
switch (index / 4)
{
case 0: format.SamplesPerSecond = 11025;
break;
case 1: format.SamplesPerSecond = 22050;
break;
case 2: format.SamplesPerSecond = 44100;
break;
case 3:
format.SamplesPerSecond = 48000;
break;
case 4: format.SamplesPerSecond = 96000;
break;
default: break;
}
switch (index % 4)
{
case 0: format.Channels = 1; format.BitsPerSample = 16;
break;
case 1: format.Channels = 1; format.BitsPerSample = 8;
break;
case 2: format.Channels = 2; format.BitsPerSample = 16;
break;
case 3: format.Channels = 2; format.BitsPerSample = 8;
break;
default: break;
}
//これで、waveformatが決まった。
format.BlockAlign =(short)((format.Channels) * (format.BitsPerSample / 8));
format.AverageBytesPerSecond = format.BlockAlign * format.SamplesPerSecond;
mf.myformat = format; //ここで、メインプログラムに、このformatを渡す。
Close();
}
これで、DirectX9 DirectSound Sample(CaptureSound)の、第2の画面操作が、終わりました。
次回から、いよいよ、本丸の、メインプログラムに、入ります。
これが、大事やねんけど、ちょっと、しんどいねん。
H.18.6.24