Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Wavefile tone

  1. May 16, 2014 #1
    I am trying to make a tone file and it is working. but it is not sounding the way I want it to sound. There is a low tone beat in the file. that I did not add to it. And I do not know why it is there.. here is my code:

    Code (Text):


       wavefile = new WaveFileWriter(save1.FileName, tone.WaveFormat);
       double counter2 = 0;
       double Frequency3 = Convert.ToDouble(FREtx3.Text);
       double Amplitude3 = Convert.ToDouble(PeakTXT3.Text);
       Beat = Convert.ToDouble(isochronictxt.Text);
       if (Beat != 0)
       {
          Beat = (1 / Beat);
       }
       else
      {
          Beat = 0;
      }
      for (int n = 0; n < time; n++)
      {
          if (counter2 >= Beat)
         {
              for (int t = 0; t < 10000; t++)
              {
                   wavefile.WriteSample(0F);
                   wavefile.WriteSample(0F);
                                       
              }

              counter2 = 0;
         }
         else
         {
              wavefile.WriteSample((float)Math.Abs((Amplitude3 * Math.Sin((2 * Math.PI * n * Frequency3) / 44100))));
              wavefile.WriteSample((float)Math.Abs((Amplitude3 * Math.Sin((2 * Math.PI * n * Frequency3) / 44100))));
              counter2 = counter2 + (1D / 44100D);    
         }
      }
      wavefile.Flush();
      wavefile.Dispose();
      file.Add(save1.FileName);
     }

     

    where is that tone coming from ?
    https://onedrive.live.com/redir?resid=CC8AF223519E2440!114&authkey=!ADGTKdZEpF4F4Q4&ithint=file,.wav

    you can download the song file there...
    where is that lost tone coming from ??
     
    Last edited by a moderator: May 17, 2014
  2. jcsd
  3. May 17, 2014 #2

    Mark44

    Staff: Mentor

    Why are you writing the sample twice (in two places)? The places I'm referring to are here
    Code (Text):
    for (int t = 0; t < 10000; t++)
              {
                   wavefile.WriteSample(0F);
                   wavefile.WriteSample(0F);
                                       
              }
     
    and here
    Code (Text):
    else
         {
              wavefile.WriteSample((float)Math.Abs((Amplitude3 * Math.Sin((2 * Math.PI * n * Frequency3) / 44100))));
              wavefile.WriteSample((float)Math.Abs((Amplitude3 * Math.Sin((2 * Math.PI * n * Frequency3) / 44100))));
              counter2 = counter2 + (1D / 44100D);    
         }
     
    Just a guess, but the sound you're hearing might be the part of the audio at the end of the first write and at the beginning of the next.

    Also, it might be informative to know what frequency, amplitude, and beat you're using, all of which apparently come from some text files.
     
  4. May 17, 2014 #3
    I am using two channels, so i want both changes to play the same points and the same time. so the even indices are like the right channel and the old indices are the left channel.

    Also I do not understand what you mean by "Just a guess, but the sound you're hearing might be the part of the audio at the end of the first write and at the beginning of the next."


    Frequency is 180 Hz
    amplitude is 0.05 db
    and beat is 10 Hz
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook