Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.62 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. using NAudio;
  11.  
  12.  
  13. namespace WindowsFormsApplication2
  14. {
  15.     public partial class Form1 : Form
  16.     {
  17.  
  18.         NAudio.Wave.WaveFormat mAudioFormat = new NAudio.Wave.WaveFormat(8000, 8, 1);
  19.         NAudio.Wave.DirectSoundOut mAudioSPK;
  20.  
  21.  
  22.         public Form1()
  23.         {
  24.             InitializeComponent();
  25.  
  26.  
  27.             MojBufor mMojBuf = new MojBufor();
  28.             mAudioSPK = new NAudio.Wave.DirectSoundOut();
  29.             mAudioSPK.Init(mMojBuf);
  30.            
  31.             mAudioSPK.Play();
  32.         }
  33.  
  34.         private void Form1_Load(object sender, EventArgs e)
  35.         {
  36.  
  37.         }
  38.  
  39.  
  40.     }
  41.     public class MojBufor : NAudio.Wave.IWaveProvider
  42.     {
  43.         double mPhase = 0.0;
  44.         double mDP1HZ = 2 * Math.PI / 8000;
  45.  
  46.         int mSampleCnt = 0;
  47.  
  48.         public NAudio.Wave.WaveFormat WaveFormat
  49.         {
  50.             get { return new NAudio.Wave.WaveFormat(8000, 8, 1); }
  51.  
  52.         }
  53.  
  54.         double[] Freq = {880, 987.77, 523.25, 587.33, 659.26, 698.46, 783.99};
  55.         double[] Time = { 250.0, 80.0, 125.0 };
  56.         double xd = 2000;
  57.  
  58.         public int Read(byte[] aBuf, int aOffset, int aCnt)
  59.         {
  60.             for (int i = 0; i < aCnt; i++)
  61.             {
  62.                 aBuf[i] = (byte)(((Math.Sin(mPhase) + 1.0) / 2.0) * 255.0);
  63.  
  64.                 if (mSampleCnt < xd)
  65.                 {
  66.                     mPhase += Freq[4] * mDP1HZ;
  67.                     xd += Time[1] ;
  68.                 }
  69.                 else if (mSampleCnt < xd)
  70.                 {
  71.                     xd += Time[1];
  72.                 }
  73.                 else if (mSampleCnt < xd)
  74.                 {
  75.                     mPhase += Freq[4] * mDP1HZ;
  76.                     xd += Time[1] ;
  77.                 }
  78.                 else if (mSampleCnt < xd)
  79.                 {
  80.                     xd += Time[1];
  81.                 }
  82.                 else if (mSampleCnt < xd)
  83.                 {
  84.                     mPhase += Freq[4] * mDP1HZ;
  85.                     xd += Time[1];
  86.                 }
  87.                 else if (mSampleCnt < xd)
  88.                 {
  89.                     xd += Time[1];
  90.                 }
  91.                 else if (mSampleCnt < xd)
  92.                 {
  93.                     mPhase += Freq[6] * mDP1HZ;
  94.                     xd += Time[1];
  95.                 }
  96.                 else
  97.                 {
  98.                     mSampleCnt = 0;
  99.                 }
  100.             }
  101.                 return aCnt;
  102.            
  103.         }
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement