NAudio साइनवेव - naudio

ब्लॉग पर उदाहरण का उपयोग करके मैंने साइन लहर का उत्पादन किया है:

public class SineWaveProvider32 : WaveProvider32{

int sample;

public SineWaveProvider32()
{
Frequency = 1000;
Amplitude = 0.25f; // let"s not hurt our ears
}

public float Frequency { get; set; }
public float Amplitude { get; set; }

public override int Read(float[] buffer, int offset, int sampleCount)
{
int sampleRate = WaveFormat.SampleRate;
for (int n = 0; n < sampleCount; n++)
{
buffer[n+offset] = (float)(Amplitude * Math.Sin((2 * Math.PI * sample * Frequency) / sampleRate));
sample++;
if (sample >= sampleRate) sample = 0;
}
return sampleCount;
}
}

जब मैं इस साइन लहर को एक अंतहीन लूप खेलता हूं। सोच रहा था कि मैं किसी दिए गए लम्बाई के साथ ध्वनि कैसे उत्पन्न करूँगा?

उत्तर:

जवाब के लिए 2 № 1

लंबे समय तक साइन लहर चलती रहेगीपढ़ें 0. नहीं लौटा। पढ़ें बफर को लिखे गए नमूनों की संख्या (और हमेशा नमूना होना चाहिए जब तक कि आप "टी समाप्त") नहीं करते हैं। इसलिए चल रहे कुल कितने नमूनों को वापस रखें संख्या नमूना दर के बराबर है, आपने ऑडियो का एक सेकंड खेला है।