//Va a generar una señal con una frecuencia de 440 y la guardara en un wav private void btnCrearFrecuencia_Click(object sender, RoutedEventArgs e) { var sampleRate = 44100; var channelCount = 1; var signalGenerator = new SignalGenerator(sampleRate, channelCount); signalGenerator.Type = SignalGeneratorType.Sin; signalGenerator.Frequency = 440; signalGenerator.Gain = 0.5; var waveFormat = new WaveFormat(sampleRate, 16, channelCount); var writer = new CueWaveFileWriter("tono.wav", waveFormat); var muestrasPorSegundo = sampleRate * channelCount; var buffer = new float[muestrasPorSegundo]; for (int i = 0; i < 5; i++) { var muestras = signalGenerator.Read(buffer, 0, muestrasPorSegundo); writer.WriteSamples(buffer, 0, muestras); } writer.Dispose(); }
public int Read(float[] buffer, int offset, int count) { if (started) { int sampleRead = signalGenerator.Read(buffer, offset, count); return sampleRead; } return 0; }
private void FillTable(SignalGeneratorType signalGeneratorType) { waveTable = new float[(int)sampleRate]; var sigGen = new SignalGenerator(44100, 1) { Frequency = 1, Gain = 1, Type = signalGeneratorType }; sigGen.Read(waveTable, 0, (int)sampleRate); // debug System.Diagnostics.Debug.WriteLine(String.Format("start: {0}, mid: {1}, end: {2}", waveTable[0], waveTable[(int)((sampleRate / 2))], waveTable[(int)sampleRate - 1])); readPosition = 0; }
public int Read(float[] buffer, int offset, int count) { var samples = _source.Read(buffer, offset, count); var lfoBuffer = new float[count]; _lfo.Read(lfoBuffer, offset, count); for (int i = 0; i < samples; i++) { if (_lfo.Gain > 0.0f) { buffer[offset + i] += buffer[offset + i] * lfoBuffer[offset + i]; } } return(samples); }
//Va a generar una señal con una frecuencia de 440 //y la guardara en un wav private void btnCrearFrecuencia_Click(object sender, RoutedEventArgs e) { var sampleRate = 44100; var channelCount = 1; var signalGenerator = new SignalGenerator(sampleRate, channelCount); signalGenerator.Type = SignalGeneratorType.Sin; signalGenerator.Frequency = Int32.Parse(txtFrecuencia.Text); signalGenerator.Gain = 0.5; //ganancia = toma la amplitud maxima var waveFormat = new WaveFormat(sampleRate, 16, channelCount); var writer = new WaveFileWriter(txtNombreArchivo.Text, waveFormat); var muestrasPorSegundo = sampleRate * channelCount; var buffer = new float[muestrasPorSegundo]; for (int i = 0; i < Int32.Parse(txtSegundos.Text); i++) { var muestras = signalGenerator.Read(buffer, 0, muestrasPorSegundo); writer.WriteSamples(buffer, 0, muestras); } writer.Dispose(); }
/// <summary> /// Sends a sample from a signal generator generated waveform. /// </summary> private void SendSignalGeneratorSample(object state) { lock (_audioStreamTimer) { int inputBufferSize = RTP_TIMESTAMP_RATE / 1000 * AUDIO_SAMPLE_PERIOD_MILLISECONDS; int outputBufferSize = RTP_TIMESTAMP_RATE / 1000 * AUDIO_SAMPLE_PERIOD_MILLISECONDS; // Get the signal generator to generate the samples and then convert from // signed linear to PCM. float[] linear = new float[inputBufferSize]; _signalGenerator.Read(linear, 0, inputBufferSize); short[] pcm = linear.Select(x => (short)(x * 32767f)).ToArray(); byte[] encodedSample = new byte[outputBufferSize]; for (int index = 0; index < inputBufferSize; index++) { encodedSample[index] = MuLawEncoder.LinearToMuLawSample(pcm[index]); } _peerConnection.SendAudioFrame((uint)outputBufferSize, _peerConnection.GetSendingFormat(SDPMediaTypesEnum.audio).FormatCodec.GetHashCode(), encodedSample); } }
public int Read(float[] buffer, int offset, int count) { return(FSigGen.Read(buffer, offset, count)); }
public int Read(float[] buffer, int offset, int count) { return(_useRead ? _signalrGenerator.Read(buffer, offset, count) : 0); }