Exemple #1
0
        private void record(object sender, RoutedEventArgs e)
        {
            if (this.lvSentences.SelectedItems.Count < 1)
            {
                return;
            }

            if (isRecording)
            {
                stop(sender, e);
            }
            else
            {
                saveLanguage();
                isRecording             = true;
                lblRecording.Visibility = System.Windows.Visibility.Visible;
                Sentence sentence = (Sentence)this.lvSentences.SelectedItem;
                string   path     = sentence.fullPath;
                Directory.CreateDirectory(Path.GetDirectoryName(path));  // Create directory if it doesn't exist
                System.IO.File.WriteAllText(path, "");                   // Create and flush the file

                filewriter = new WavFileWriter(path, recSamplerate, recBits, recChannels);
                WaveFormat fmt = new WaveFormat(recSamplerate, recBits, recChannels);
                recorder = new WaveInRecorder(-1, fmt, recBuffersize, this.DataArrived);
            }
        }
        public unsafe void InitAudio(int sampleRate, int bufferSize)
        {
            //Set up audio provider
            audioProvider = new BufferedWaveProvider(WaveFormat.CreateIeeeFloatWaveFormat(sampleRate, 2));
            audioOutput   = new WaveOut();
            audioOutput.Init(audioProvider);
            audioOutput.Play();

            //Create buffer
            audioOutputBuffer = new byte[bufferSize * 2 * sizeof(float)];
            audioOutputHandle = GCHandle.Alloc(audioOutputBuffer, GCHandleType.Pinned);
            audioOutputPtr    = (float *)audioOutputHandle.AddrOfPinnedObject();

            //Create WAV file
            test = new WavFileWriter("F:\\test_audio.wav", FileMode.Create, sampleRate, 2, 16, bufferSize);
        }
Exemple #3
0
    /// <summary>
    /// Filter out silence or noise from start and end of wave file. 
    /// </summary>
    /// <param name="strPath">Source wave file</param>
    /// <param name="noiceLevel">Absolute value for noice threshold</param>
    /// <returns>True/False</returns>
    public bool StripSilence(string strPath, int noiceLevel)
    {
        if ((strPath == null) || (strPath == ""))
            return false;

        // Read from file 
        wavProcessor wain = new wavProcessor();
        if (!wain.WaveHeaderIN(@strPath)) return false;
        byte[] arrfile = GetWAVEData(strPath);

        int startpos = 0;
        int endpos = arrfile.Length - 1;

        // Check for silence at start
        for (int j = 0; isSilence(arrfile, j, noiceLevel); j += 20)
            startpos = j;

        // Allow room for tone-in buffer
        int buffer = wain.SampleRate * (wain.BitsPerSample / 8) / 32; // 1/32 seconds lead time
        startpos = startpos - buffer;
        if (startpos < 0)
            startpos = 0;

        // Check for silence at end. No need to check tone out buffer
        for (int k = arrfile.Length - buffer; (k >= 0) && (isSilence(arrfile, k, noiceLevel)); k -= 20)
            endpos = k;

        // Allow room for tone-out buffer
        endpos = endpos + buffer;
        if (endpos > arrfile.Length)
            endpos = arrfile.Length - 2;

        if (startpos >= endpos)
            return false;

        byte[] newarr = new byte[endpos - startpos];
        for (int ni = 0, m = startpos; ni < newarr.Length; m++, ni++)
            newarr[ni] = arrfile[m];

        // write file back
        WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels);
        writer.Write(newarr, newarr.Length);
        writer.Close();

        return true;
    }
        private void buttonModulateAmplitude_Click(object sender, EventArgs e)
        {
            if (generatedSignal.Count == 0)
            {
                MessageBox.Show("Generate signal first!");
            }
            else
            {
                var inputValues = ProcessInput();
                modulationSignal = CreateProperSignal(comboBoxWave.SelectedIndex, inputValues.Item1, inputValues.Item2, inputValues.Item3);
                currentSignal.AM = modulationSignal;

                generatedSignal = currentSignal.GenerateSignal();
                var wavFileWriter = new WavFileWriter(new FileStream(PATH, FileMode.Create), sampleRate, 1000000, 1);
                wavFileWriter.WriteAll(generatedSignal, soundLength);
            }
        }
Exemple #5
0
    /// <summary>
    /// Speed up wav file to mimic Donald Duck
    /// </summary>
    /// <param name="strPath">Source wave</param>
    /// <param name="speed">Speed between 0 and 19 </param>
    /// <returns>True/False</returns>
    public bool SpeedUp(string strPath, int speed)
    {
        if ((strPath == null) || (strPath == ""))
        {
            return(false);
        }

        if ((speed < 0) || (speed > 19))
        {
            return(false);
        }

        // Read from file
        wavProcessor wain = new wavProcessor();

        if (!wain.WaveHeaderIN(@strPath))
        {
            return(false);
        }
        byte[] arrfile = GetWAVEData(strPath);
        byte[] newfile = new byte[arrfile.Length];

        int skip = 21 - speed;
        int j    = 0;

        for (int i = 0; i < arrfile.Length; i += 2)
        {
            if (skip > 20 || (((i / 2) % skip) != 0))
            {
                newfile[j]     = arrfile[i];
                newfile[j + 1] = arrfile[i + 1];
                j += 2;
            }
        }
        // write file back
        WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels);

        writer.Write(newfile, j);
        writer.Close();
        return(true);
    }
Exemple #6
0
        static void Main(string[] args)
        {
            LibUSBProvider provider = new LibUSBProvider();
            var            testd    = provider.FindDevices(0x1d50, 0x60a1)[0];

            testd.OpenDevice();

            var b     = new LibSDR.Components.IO.USB.UsbBuffer(512);
            int testr = testd.BulkTransfer(LibSDR.Components.IO.USB.UsbTransferDirection.READ, 0x01, b, 1000);


            AirSpyDevice device = AirSpyDevice.OpenDevice(provider);

            device.StartRx();
            device.SampleRate = 10000000;
            //device.SampleRate = 3000000;

            if (true)
            {
                device.CenterFrequency = 93700000;
                device.SetLinearGain(6 / 21f);
            }
            else
            {
                device.CenterFrequency = 144430000;
                device.SetLinearGain(2 / 21f);
            }

            test = new WavFileWriter(new FileStream("F:\\test.wav", FileMode.Create), (int)device.SampleRate, 2, LibSDR.Components.IO.SampleFormat.Short16, 1 << 16);

            UnsafeBuffer buffer = UnsafeBuffer.Create(1 << 16, out Complex * bufferPtr);

            while (true)
            {
                int read = device.Read(bufferPtr, 1 << 16, 1000);
                test.Write(bufferPtr, read);
                test.FinalizeFile();
            }
        }
Exemple #7
0
    /// <summary>
    /// Tone out wav file
    /// </summary>
    /// <param name="strPath">Source wave</param>
    /// <returns>True/False</returns>
    public bool ToneOut(string strPath)
    {
        if ((strPath == null) || (strPath == ""))
        {
            return(false);
        }

        // Read from file
        wavProcessor wain = new wavProcessor();

        if (!wain.WaveHeaderIN(@strPath))
        {
            return(false);
        }
        byte[] arrfile = GetWAVEData(strPath);

        // Calculate constants
        int end   = wain.Length;
        int start = end - (wain.SampleRate * (wain.BitsPerSample / 8) / 16); // 1/16 seconds from end
        int span  = end - start;

        //change volume
        for (int j = start; j < arrfile.Length; j += 2)
        {
            short snd = ComplementToSigned(ref arrfile, j);
            snd = Convert.ToInt16(snd * (end - j) / span);

            byte[] newval = SignedToComplement(snd);
            arrfile[j]     = newval[0];
            arrfile[j + 1] = newval[1];
        }
        // write file back
        WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels);

        writer.Write(arrfile, arrfile.Length);
        writer.Close();

        return(true);
    }
        private void buttonCreate_Click(object sender, EventArgs e)
        {
            if (!createPoly)
            {
                var inputValues = ProcessInput();
                currentSignal = CreateProperSignal(comboBoxWave.SelectedIndex, inputValues.Item1, inputValues.Item2, inputValues.Item3);

                generatedSignal = currentSignal.GenerateSignal();
            }
            else
            {
                generatedSignal = resultSignal[0].GenerateSignal();
                for (int i = 1; i < resultSignal.Count; i++)
                {
                    var getSignal = resultSignal[i].GenerateSignal();
                    for (int j = 0; j < getSignal.Count; j++)
                    {
                        generatedSignal[j] += getSignal[j];
                    }
                }

                /*
                 * generatedSignal = new List<double>(polyHarmonicsSignal[0]);
                 * for (int i = 1; i < polyHarmonicsSignal.Count; i++)
                 * {
                 *  for (int j = 0; j < generatedSignal.Count; j++)
                 *  {
                 *      generatedSignal[j] += polyHarmonicsSignal[i][j];
                 *  }
                 * }
                 */
                createPoly = false;
            }

            var wavFileWriter = new WavFileWriter(new FileStream(PATH, FileMode.Create), sampleRate, 1000000, 1);

            wavFileWriter.WriteAll(generatedSignal, 10);
        }
Exemple #9
0
 public void InitAudio(int sampleRate, int bufferSize)
 {
     test = new WavFileWriter("/home/pi/test.wav", FileMode.Create, sampleRate, 2, 16, bufferSize);
 }
 public WavAudioPipe(string filename, int rate, int bufferSize)
 {
     wav = new WavFileWriter(new FileStream(filename, FileMode.Create), rate, 2, LibSDR.Components.IO.SampleFormat.Short16, bufferSize);
 }
Exemple #11
0
    /// <summary>
    /// Filter out silence or noise from start and end of wave file.
    /// </summary>
    /// <param name="strPath">Source wave file</param>
    /// <param name="noiceLevel">Absolute value for noice threshold</param>
    /// <returns>True/False</returns>
    public bool StripSilence(string strPath, int noiceLevel)
    {
        if ((strPath == null) || (strPath == ""))
        {
            return(false);
        }

        // Read from file
        wavProcessor wain = new wavProcessor();

        if (!wain.WaveHeaderIN(@strPath))
        {
            return(false);
        }
        byte[] arrfile = GetWAVEData(strPath);

        int startpos = 0;
        int endpos   = arrfile.Length - 1;

        // Check for silence at start
        for (int j = 0; isSilence(arrfile, j, noiceLevel); j += 20)
        {
            startpos = j;
        }

        // Allow room for tone-in buffer
        int buffer = wain.SampleRate * (wain.BitsPerSample / 8) / 32; // 1/32 seconds lead time

        startpos = startpos - buffer;
        if (startpos < 0)
        {
            startpos = 0;
        }

        // Check for silence at end. No need to check tone out buffer
        for (int k = arrfile.Length - buffer; (k >= 0) && (isSilence(arrfile, k, noiceLevel)); k -= 20)
        {
            endpos = k;
        }

        // Allow room for tone-out buffer
        endpos = endpos + buffer;
        if (endpos > arrfile.Length)
        {
            endpos = arrfile.Length - 2;
        }

        if (startpos >= endpos)
        {
            return(false);
        }

        byte[] newarr = new byte[endpos - startpos];
        for (int ni = 0, m = startpos; ni < newarr.Length; m++, ni++)
        {
            newarr[ni] = arrfile[m];
        }

        // write file back
        WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels);

        writer.Write(newarr, newarr.Length);
        writer.Close();

        return(true);
    }
Exemple #12
0
    /// <summary>
    /// Tone in wav file
    /// </summary>
    /// <param name="strPath">Source wave</param>
    /// <returns>True/False</returns>
    public bool ToneIn(string strPath)
    {
        if ((strPath == null) || (strPath == ""))
            return false;

        // Read from file
        wavProcessor wain = new wavProcessor();
        if (!wain.WaveHeaderIN(@strPath)) return false;
        byte[] arrfile = GetWAVEData(strPath);

        // Calculate constants
        int start = 0;
        int end = wain.SampleRate * (wain.BitsPerSample / 8) / 16; // 1/16 seconds
        int span = end - start;

        //change volume
        for (int j = start; j < end; j += 2)
        {
            short snd = ComplementToSigned(ref arrfile, j);
            snd = Convert.ToInt16(snd * (j / span));
            byte[] newval = SignedToComplement(snd);
            arrfile[j] = newval[0];
            arrfile[j + 1] = newval[1];
        }
        // write file back
        WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels);
        writer.Write(arrfile, arrfile.Length);
        writer.Close();

        return true;
    }
Exemple #13
0
    /// <summary>
    /// Speed up wav file to mimic Donald Duck
    /// </summary>
    /// <param name="strPath">Source wave</param>
    /// <param name="speed">Speed between 0 and 19 </param>
    /// <returns>True/False</returns>
    public bool SpeedUp(string strPath, int speed)
    {
        if ((strPath == null) || (strPath == ""))
            return false;

        if ((speed < 0) || (speed > 19))
            return false;

        // Read from file
        wavProcessor wain = new wavProcessor();
        if (!wain.WaveHeaderIN(@strPath)) return false;
        byte[] arrfile = GetWAVEData(strPath);
        byte[] newfile = new byte[arrfile.Length];

        int skip = 21-speed;
        int j = 0;
        for (int i = 0; i < arrfile.Length; i += 2)
        {
            if (skip > 20 || (((i/2) % skip) != 0))
            {
                newfile[j] = arrfile[i];
                newfile[j + 1] = arrfile[i + 1];
                j += 2;
            }
        }
        // write file back
        WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels);
        writer.Write(newfile, j);
        writer.Close();
        return true;
    }