⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 noise.cpp

📁 Audacity是一款用於錄音和編輯聲音的、免費的開放源碼軟體。它可以執行於Mac OS X、Microsoft Windows、GNU/Linux和其它作業系統
💻 CPP
字号:
/**********************************************************************  Audacity: A Digital Audio Editor  Noise.cpp  Dominic Mazzoni    An effect for the "Generator" menu to add white noise.**********************************************************************/#include "Noise.h"#include "Silence.h"#include "../WaveTrack.h"#include <wx/defs.h> #include <stdlib.h>void MakeNoise(float *buffer, sampleCount len){   sampleCount i;   float div = ((float)RAND_MAX) / 2.0f;   for(i=0; i<len; i++)      buffer[i] = (rand() / div) - 1.0;}bool EffectNoise::PromptUser(){   if (mT1 > mT0)      length = mT1 - mT0;   GenerateDialog dlog(mParent, -1, _("Generate Noise"));   dlog.length = length;   dlog.TransferDataToWindow();   dlog.CentreOnParent();   dlog.ShowModal();   if (dlog.GetReturnCode() == 0)      return false;   length = dlog.length;   return true;}bool EffectNoise::Process(){   if (length <= 0.0)      length = sDefaultGenerateLen;   //Iterate over each track   TrackListIterator iter(mWaveTracks);   WaveTrack *track = (WaveTrack *)iter.First();   while (track) {      WaveTrack *tmp = mFactory->NewWaveTrack(track->GetSampleFormat());      tmp->SetRate(track->GetRate());      longSampleCount numSamples =         (longSampleCount)(length * track->GetRate() + 0.5);      longSampleCount i = 0;      float *data = new float[tmp->GetMaxBlockSize()];      sampleCount block;      while(i < numSamples) {         block = tmp->GetBestBlockSize(i);         if (block > (numSamples - i))             block = numSamples - i;         MakeNoise(data, block);         tmp->Append((samplePtr)data, floatSample, block);         i += block;      }      delete[] data;      tmp->Flush();      track->Clear(mT0, mT1);      track->Paste(mT0, tmp);      delete tmp;            //Iterate to the next track      track = (WaveTrack *)iter.Next();   }	mT1 = mT0 + length; // Update selection.   return true;}// Indentation settings for Vim and Emacs and unique identifier for Arch, a// version control system. Please do not modify past this point.//// Local Variables:// c-basic-offset: 3// indent-tabs-mode: nil// End://// vim: et sts=3 sw=3// arch-tag: 0ca03dc2-c229-44b4-a6eb-1d5d04a3983c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -