abasfar
شنبه 23 بهمن 1389, 17:39 عصر
سلام کسی با فضای کاری Microsoft.DirectX.DirectSound
صدا ضبط کرده که الان هم تو ویندوز 7 کار کنه میشه به من هم کدشو بده من زیاد جستجو کردم ولی هیچ کدامشان کار نکردند
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using Microsoft.DirectX;
using System.IO;
using Microsoft.DirectX.DirectSound;
using System.Threading;
using Buffer = Microsoft.DirectX.DirectSound.Buffer;
namespace WAppSoundRecord
{
public partial class Form1 : Form
{
private Thread _captureThread;
private Device device;
private Capture capture;
private Buffer buffer;
private SecondaryBuffer secondaryBuffer;
private BufferDescription bufferDesc;
private CaptureBuffer captureBuffer;
private WaveFormat waveFormat;
private CaptureBufferDescription captureBuffDesc;
private MemoryStream stream;
private byte[] streamBuffer;
public Form1()
{
InitializeComponent();
CreateDevice();
CreateWaveFormat();
CreateBufferDescription();
SetCooperativeLevel();
CreateCapture();
CreateCapureDescription();
CreateCaptureBuffer();
CreateStreamBuffer();
CreateStream();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
_captureThread = new Thread(new ThreadStart(CaptureThread));
_captureThread.Start();
}
private void CreateDevice()
{
device = new Device();
}
private void CreateBufferDescription()
{
bufferDesc = new BufferDescription();
bufferDesc.Format = waveFormat;
bufferDesc.BufferBytes = 100000;
bufferDesc.ControlPositionNotify = true;
bufferDesc.ControlFrequency = true;
bufferDesc.ControlPan = true;
bufferDesc.ControlVolume = true;
}
private void SetCooperativeLevel()
{
device.SetCooperativeLevel(
this, CooperativeLevel.Priority // The cooperative level
);
}
private void CreateWaveFormat()
{
waveFormat = new WaveFormat();
waveFormat.BitsPerSample = 8;
waveFormat.BlockAlign = 1;
waveFormat.Channels = 1;
waveFormat.AverageBytesPerSecond = 20500;
waveFormat.SamplesPerSecond = 20500;
waveFormat.FormatTag = WaveFormatTag.Pcm;
}
private void CreateCapture()
{
capture = new Capture();
}
private void CreateCapureDescription()
{
captureBuffDesc = new CaptureBufferDescription();
captureBuffDesc.BufferBytes = 100000;
captureBuffDesc.Format = this.waveFormat;
}
private void CreateCaptureBuffer()
{
captureBuffer = new CaptureBuffer(captureBuffDesc, capture);
}
private void CreateStream()
{
stream = new MemoryStream(streamBuffer);
}
private void CreateStreamBuffer()
{
streamBuffer = new byte[100000];
for (int i = 0; i < 100000; i++)
streamBuffer[i] = 0;
}
private void CaptureThread()
{
this.captureBuffer.Start(true);
while (true)
{
byte[] data = (byte[])captureBuffer.Read(0, typeof(byte), LockFlag.None, 100000);
MemoryStream stream = new MemoryStream(data, false);
buffer = new Buffer(bufferDesc, device);
buffer.Write(0, stream, (int)stream.Length, LockFlag.EntireBuffer);
secondaryBuffer = new SecondaryBuffer(stream, device);
secondaryBuffer.Play(0, BufferPlayFlags.Default);
}
}
}
}
صدا ضبط کرده که الان هم تو ویندوز 7 کار کنه میشه به من هم کدشو بده من زیاد جستجو کردم ولی هیچ کدامشان کار نکردند
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using Microsoft.DirectX;
using System.IO;
using Microsoft.DirectX.DirectSound;
using System.Threading;
using Buffer = Microsoft.DirectX.DirectSound.Buffer;
namespace WAppSoundRecord
{
public partial class Form1 : Form
{
private Thread _captureThread;
private Device device;
private Capture capture;
private Buffer buffer;
private SecondaryBuffer secondaryBuffer;
private BufferDescription bufferDesc;
private CaptureBuffer captureBuffer;
private WaveFormat waveFormat;
private CaptureBufferDescription captureBuffDesc;
private MemoryStream stream;
private byte[] streamBuffer;
public Form1()
{
InitializeComponent();
CreateDevice();
CreateWaveFormat();
CreateBufferDescription();
SetCooperativeLevel();
CreateCapture();
CreateCapureDescription();
CreateCaptureBuffer();
CreateStreamBuffer();
CreateStream();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
_captureThread = new Thread(new ThreadStart(CaptureThread));
_captureThread.Start();
}
private void CreateDevice()
{
device = new Device();
}
private void CreateBufferDescription()
{
bufferDesc = new BufferDescription();
bufferDesc.Format = waveFormat;
bufferDesc.BufferBytes = 100000;
bufferDesc.ControlPositionNotify = true;
bufferDesc.ControlFrequency = true;
bufferDesc.ControlPan = true;
bufferDesc.ControlVolume = true;
}
private void SetCooperativeLevel()
{
device.SetCooperativeLevel(
this, CooperativeLevel.Priority // The cooperative level
);
}
private void CreateWaveFormat()
{
waveFormat = new WaveFormat();
waveFormat.BitsPerSample = 8;
waveFormat.BlockAlign = 1;
waveFormat.Channels = 1;
waveFormat.AverageBytesPerSecond = 20500;
waveFormat.SamplesPerSecond = 20500;
waveFormat.FormatTag = WaveFormatTag.Pcm;
}
private void CreateCapture()
{
capture = new Capture();
}
private void CreateCapureDescription()
{
captureBuffDesc = new CaptureBufferDescription();
captureBuffDesc.BufferBytes = 100000;
captureBuffDesc.Format = this.waveFormat;
}
private void CreateCaptureBuffer()
{
captureBuffer = new CaptureBuffer(captureBuffDesc, capture);
}
private void CreateStream()
{
stream = new MemoryStream(streamBuffer);
}
private void CreateStreamBuffer()
{
streamBuffer = new byte[100000];
for (int i = 0; i < 100000; i++)
streamBuffer[i] = 0;
}
private void CaptureThread()
{
this.captureBuffer.Start(true);
while (true)
{
byte[] data = (byte[])captureBuffer.Read(0, typeof(byte), LockFlag.None, 100000);
MemoryStream stream = new MemoryStream(data, false);
buffer = new Buffer(bufferDesc, device);
buffer.Write(0, stream, (int)stream.Length, LockFlag.EntireBuffer);
secondaryBuffer = new SecondaryBuffer(stream, device);
secondaryBuffer.Play(0, BufferPlayFlags.Default);
}
}
}
}