-
Notifications
You must be signed in to change notification settings - Fork 0
/
Vibrato.cpp
47 lines (40 loc) · 1.06 KB
/
Vibrato.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*! \file Vibrato.cpp
* @author Sylvain Filteau <[email protected]>
* @author Philippe Tremblay <[email protected]>
* @date avril 2004
* @version 1.0
*
* \brief Corp de la classe CVibrato
*/
#include "vibrato.h"
#include "LFO.h"
#include "Tools.h"
CVibrato::CVibrato(CWAVE *son) : CEffet(son){}
int CVibrato::Vibrer(float frequence, float mix)
{
CTools tool;
CLFO *lfo;
int ret = 0;
// Vérification de la valeur de mix, elle ne peut pas être plus
// grande que 1 et plus petite que 0;
if (mix >= 0 && mix <= 1)
{
lfo = new CLFO(LFOSIN, tool.NbEchantillonsParCycle(frequence, m_son->Entete().SampleRate));
if (m_son->Backup())
{
for (int i = 0; i < m_son->getNbEchantillon(); i++)
{
m_son->getCanalGauche()[i] = tool.Mixer(m_son->getCanalGauche()[i],
m_son->getCanalGauche()[i] * lfo->getNextValeur(), mix);
if (m_son->Stereo())
{
m_son->getCanalDroite()[i] = tool.Mixer(m_son->getCanalDroite()[i],
m_son->getCanalDroite()[i] * lfo->getCurrentValue(), mix);
}
}
ret = 1;
}
delete lfo;
}
return ret;
}