Troubleshooting Wavefile Tones: Fixing Unwanted Low Tone Beats in Your Code

  • Thread starter Thread starter btb4198
  • Start date Start date
Click For Summary
SUMMARY

The discussion focuses on troubleshooting unwanted low tone beats in a generated wave file using C# and the NAudio library. The user is experiencing an unexpected low tone in their audio output, which is attributed to the way samples are written in the code. Specifically, the code writes silence (0F) for 10,000 samples and then writes the tone samples, potentially causing audible artifacts. Key parameters include a frequency of 180 Hz, an amplitude of 0.05 dB, and a beat of 10 Hz.

PREREQUISITES
  • Understanding of C# programming language
  • Familiarity with audio processing concepts
  • Knowledge of the NAudio library for audio file manipulation
  • Basic principles of wave file structure and sample writing
NEXT STEPS
  • Investigate the NAudio library documentation for best practices in audio sample writing
  • Learn about audio artifacts and how to minimize them in wave file generation
  • Explore techniques for synchronizing multiple audio channels in C#
  • Research the effects of frequency and amplitude settings on audio quality
USEFUL FOR

Audio developers, sound engineers, and programmers working with audio file generation and manipulation in C# will benefit from this discussion.

btb4198
Messages
570
Reaction score
10
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:
   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:
Technology news on Phys.org
btb4198 said:
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:
   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 ??

Why are you writing the sample twice (in two places)? The places I'm referring to are here
Code:
for (int t = 0; t < 10000; t++)
          {
               wavefile.WriteSample(0F);
               wavefile.WriteSample(0F);
                                    
          }
and here
Code:
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.
 
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
 

Similar threads

  • · Replies 18 ·
Replies
18
Views
3K