ストリームバッファ再生に関して、完結したのでこちら(仕組み)を
参照してみてください。後日には、そのソースも公開予定です
簡単に書いていますので、不具合が起きてもご了承を
-------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.DirectSound;
using ds9 = Microsoft.DirectX.DirectSound;
namespace test
{
public partial class Form1 : Form
{
private Device dev9;
private ds9.Buffer ds_2ndBuffer;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// Managed Direct Sound の初期化
dev9 = new Device();
dev9.SetCooperativeLevel(this, CooperativeLevel.Priority);
ds9.BufferDescription desc = new ds9.BufferDescription();
// プログラムが非アクティブでも再生可能にする
desc.GlobalFocus = true;
// ファイルの読み込み方法をストリーミング化
System.IO.FileStream fs = new System.IO.FileStream
("楽曲.wav",System.IO.FileMode.Open, System.IO.FileAccess.Read););
Byte[] buf = new Byte[fs.Length];
fs.Read(buf, 0, buf.Length);
ds_2ndBuffer = new SecondaryBuffer(fs.Name, desc, dev9);
// すべての情報を基に再生
ds_2ndBuffer.Play(0, BufferPlayFlags.Default|BufferPlayFlags.Looping);
}
}
}
------------------------------------------------------
プレイリストを作成する場合は、FileStreamクラスの解放が必要です。
あとは、最新のDirectXランタイムを入れていても動作不可能な場合は
DirectX SDK導入した際に入れられたランタイムをインストールすることで起動可能です。
参照してみてください。後日には、そのソースも公開予定です
簡単に書いていますので、不具合が起きてもご了承を
-------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.DirectSound;
using ds9 = Microsoft.DirectX.DirectSound;
namespace test
{
public partial class Form1 : Form
{
private Device dev9;
private ds9.Buffer ds_2ndBuffer;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// Managed Direct Sound の初期化
dev9 = new Device();
dev9.SetCooperativeLevel(this, CooperativeLevel.Priority);
ds9.BufferDescription desc = new ds9.BufferDescription();
// プログラムが非アクティブでも再生可能にする
desc.GlobalFocus = true;
// ファイルの読み込み方法をストリーミング化
System.IO.FileStream fs = new System.IO.FileStream
("楽曲.wav",System.IO.FileMode.Open, System.IO.FileAccess.Read););
Byte[] buf = new Byte[fs.Length];
fs.Read(buf, 0, buf.Length);
ds_2ndBuffer = new SecondaryBuffer(fs.Name, desc, dev9);
// すべての情報を基に再生
ds_2ndBuffer.Play(0, BufferPlayFlags.Default|BufferPlayFlags.Looping);
}
}
}
------------------------------------------------------
プレイリストを作成する場合は、FileStreamクラスの解放が必要です。
あとは、最新のDirectXランタイムを入れていても動作不可能な場合は
DirectX SDK導入した際に入れられたランタイムをインストールすることで起動可能です。