本文整理汇总了C++中WaveFile::Output1方法的典型用法代码示例。如果您正苦于以下问题:C++ WaveFile::Output1方法的具体用法?C++ WaveFile::Output1怎么用?C++ WaveFile::Output1使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WaveFile
的用法示例。
在下文中一共展示了WaveFile::Output1方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnSave
LRESULT CMainDlg::OnSave(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
char fileName[MAX_PATH];
memset(fileName, 0, sizeof(fileName));
OPENFILENAME ofn;
memset(&ofn, 0, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = m_hWnd;
ofn.lpstrFilter = "Sound Files(*.wav)\0*.wav\0All Files(*.*)\0*.*\0";
ofn.nFilterIndex = 1;
ofn.lpstrFile = fileName;
ofn.lpstrDefExt = ".wav";
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_OVERWRITEPROMPT;
if (GetSaveFileName (&ofn))
{
WaveFile wvf;
wvf.OpenWaveFile(fileName, 2);
InitGen();
long totalSamples = (long) ((durTotal * synthParams.sampleRate) + 0.5);
long atkSamples = (long) (durAtkSus * synthParams.sampleRate);
long n;
for (n = 0; n < atkSamples; n++)
wvf.Output1(Generate());
NoteOff();
while (n++ < totalSamples)
wvf.Output1(Generate());
for (n = 0; n < 440; n++)
wvf.Output1(0);
wvf.CloseWaveFile();
}
return 0;
}
示例2: OnSaveWave
LRESULT CMainDlg::OnSaveWave(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
char fileName[MAX_PATH];
memset(fileName, 0, sizeof(fileName));
OPENFILENAME ofn;
memset(&ofn, 0, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = m_hWnd;
ofn.lpstrFilter = "Sound Files(*.wav)\0*.wav\0All Files(*.*)\0*.*\0";
ofn.nFilterIndex = 1;
ofn.lpstrFile = fileName;
ofn.lpstrDefExt = ".wav";
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_OVERWRITEPROMPT;
if (GetSaveFileName (&ofn))
{
double frq = GetFrequency();
GenWaveI wv;
wv.InitWT(frq, WT_USR(0));
EnvGen eg;
eg.InitEG(1.0, 2.0, 0.05, 0.05);
WaveFile wvf;
wvf.OpenWaveFile(fileName, 2);
long totalSamples = (long) (2.0 * synthParams.sampleRate);
for (long n = 0; n < totalSamples; n++)
wvf.Output1(eg.Gen() * wv.Gen());
wvf.CloseWaveFile();
}
return 0;
}
示例3: GenerateVib
void GenerateVib(FrqValue duration, GenWave *wv, EnvGen *eg, AmpValue lfoAmp)
{
GenWave32 lfo;
lfo.InitWT(3.5, WT_SIN);
long totalSamples = (long) ((duration * synthParams.sampleRate) + 0.5);
AmpValue volume;
AmpValue value;
eg->Reset();
for (long n = 0; n < totalSamples; n++)
{
volume = eg->Gen();
wv->Modulate(lfoAmp * lfo.Gen());
value = wv->Sample(1.0);
wvf.Output1(value * volume);
}
}
示例4: Generate
AmpValue Generate(float duration, GenUnit *wv, EnvGen *eg, AmpValue in = 1.0)
{
long totalSamples = (long) ((duration * synthParams.sampleRate) + 0.5);
AmpValue volume;
AmpValue value;
AmpValue peak = 0.0;
eg->Reset();
for (long n = 0; n < totalSamples; n++)
{
volume = eg->Gen();
value = wv->Sample(in);
if (value > peak)
peak = value;
wvf.Output1(value * volume);
}
return peak;
}
示例5: Silence
void Silence(FrqValue duration)
{
long totalSamples = (long) ((duration * synthParams.sampleRate) + 0.5);
for (long n = 0; n < totalSamples; n++)
wvf.Output1(0);
}
示例6: main
int main(int argc, char *argv[])
{
InitSynthesizer();
long n;
int pitch = 48;
FrqValue duration = 2.75;
AmpValue value1, value2;
if (argc > 1)
duration = atof(argv[1]);
if (argc > 2)
pitch = atoi(argv[2]);
FrqValue frequency = synthParams.GetFrequency(pitch);
if (wvf.OpenWaveFile("example07b.wav", 2))
{
printf("Cannot open wavefile for output\n");
exit(1);
}
GenWaveFM wv;
wv.InitFM(frequency, 1, 2, WT_SIN);
EnvGen eg;
eg.InitEG(0.5f, duration, 0.5f, 0.5f);
long totalSamples = (long) ((duration * synthParams.sampleRate) + 0.5);
// reference sound.
for (n = 0; n < totalSamples; n++)
{
value2 = (eg.Gen() * wv.Gen());
wvf.Output1(value2);
}
Silence(0.25);
// Flanger #1 varies from 0 to 5ms
Flanger flng1;
flng1.InitFlanger(0.5, 0.5, 0, 0.0025, 0.005, 0.15);
// Flanger #2 varies from 45 to 50ms
Flanger flng2;
flng2.InitFlanger(0.5, 0.5, 0, 0.0042, 0.005, 0.15);
// Flanger #3 is set for a chorus effect
Flanger flng3;
flng3.InitFlanger(0.5, 0.5, 0.5, 0.100, 0.001, 0.8);
for (float snd = 0.5; snd <= 1; snd += 0.5)
{
wv.InitFM(frequency*snd, 1, 2, WT_SIN);
eg.Reset();
flng1.Clear();
for (n = 0; n < totalSamples; n++)
{
value1 = (eg.Gen() * wv.Gen());
value2 = flng1.Sample(value1);
wvf.Output2(value2, value2);
}
Silence(0.25);
eg.Reset();
flng2.Clear();
for (n = 0; n < totalSamples; n++)
{
value1 = (eg.Gen() * wv.Gen());
value2 = flng2.Sample(value1);
wvf.Output2(value2, value2);
}
Silence(0.25);
eg.Reset();
flng3.Clear();
for (n = 0; n < totalSamples; n++)
{
value1 = (eg.Gen() * wv.Gen());
value2 = flng3.Sample(value1);
wvf.Output2(value2, value2);
}
Silence(0.25);
}
wvf.CloseWaveFile();
return 0;
}