# DirectX Sound

This topic is 3203 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hello everybody! I want to make a program that captures the sound from a microphone and views the level of sound in a percentage. In the same time when the person talks without recording, also it displays the echo of the sound. I wrote this question after a long search I am really tired of it!!! I read many book and I didn’t find any helpful thing! Your help will be GREATLY appreciated, and I’m in desperate need for you people!

##### Share on other sites
I would start looking at XACT. I found it quite easy to write a class wrapper for it. I can only assume it allows for sound recording.

##### Share on other sites
First, you'll have to select and implement a sound library from several which are available. You can search this site for discussions of sound libraries using the search box in the upper right-hand corner of this screen. "DirectX", "audio" and "sound" are good keywords to start out with.

If you want to continuously display microphone input, capture the microphone input (probably double- or triple-buffered), process the data for a buffer and display it.

The "percentage" will depend on the buffer format. Commonly, buffer data will be in BYTEs or WORDs, with "no sound" at a value = 1/2 of the max value of the format data-type. That is, for WORD data, "no sound" = 32767 ( half of 65535 ). Input values will vary from 0 to 65535, but the percentage will vary plus-or-minus around 32767.

NOTE: most microphone input will have a bias. That is, the actual "no sound" level will actually be offset a little one way or the other from the calculated "no sound" level.

##### Share on other sites

"If you want to continuously display microphone input, capture the microphone input (probably double- or triple-buffered), process the data for a buffer and display it.

The "percentage" will depend on the buffer format. Commonly, buffer data will be in BYTEs or WORDs, with "no sound" at a value = 1/2 of the max value of the format data-type. That is, for WORD data, "no sound" = 32767 ( half of 65535 ). Input values will vary from 0 to 65535, but the percentage will vary plus-or-minus around 32767.

NOTE: most microphone input will have a bias. That is, the actual "no sound" level will actually be offset a little one way or the other from the calculated "no sound" level."

How can I deal with the “byte of array”
Because when I put the loop indicated below on the ‘array of byte’ after capturing the sound, 255 sound appears when there is no sound and 0 as a maximum value.
for (int i = 0; i < RecordBuffer.Length; i++)
{
Float Value= RecordBuffer;

}
And wave format
WaveFormat Format = new WaveFormat(44100, 16, 2);
How can I calculate the sound level from 0 to 100 as a persentage
I use C#.

Up

##### Share on other sites
I'm not a C# person, but it looks like you're creating a 16bit format, which is WORD, not byte.

Try something like:
// Record buffer should be array of WORDFloat value = Float(RecordBuffer - 32768); // get value relative to midpoint

1. 1
2. 2
3. 3
Rutin
14
4. 4
5. 5

• 13
• 26
• 10
• 11
• 9
• ### Forum Statistics

• Total Topics
633734
• Total Posts
3013587
×