Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void SampleEditor::tool_generateNoise(const FilterParameters* par)
- {
- if (isEmptySample())
- return;
- pp_int32 sStart = selectionStart;
- pp_int32 sEnd = selectionEnd;
- if (hasValidSelection())
- {
- if (sStart >= 0 && sEnd >= 0)
- {
- if (sEnd < sStart)
- {
- pp_int32 s = sEnd; sEnd = sStart; sStart = s;
- }
- }
- }
- else
- {
- sStart = 0;
- sEnd = sample->samplen;
- }
- preFilter(&SampleEditor::tool_generateNoise, par);
- prepareUndo();
- pp_int32 i;
- pp_int32 type = par->getParameter(0).intPart;
- VRand rand;
- rand.seed();
- switch (type)
- {
- case 0:
- for (i = sStart; i < sEnd; i++)
- setFloatSampleInWaveform(i, rand.white()*2.0f);
- break;
- case 1:
- for (i = sStart; i < sEnd; i++)
- setFloatSampleInWaveform(i, rand.pink()*2.0f);
- break;
- case 2:
- for (i = sStart; i < sEnd; i++)
- setFloatSampleInWaveform(i, rand.brown()*2.0f);
- break;
- }
- finishUndo();
- postFilter();
- }
- void SampleEditor::tool_generateSine(const FilterParameters* par)
- {
- if (isEmptySample())
- return;
- pp_int32 sStart = selectionStart;
- pp_int32 sEnd = selectionEnd;
- if (hasValidSelection())
- {
- if (sStart >= 0 && sEnd >= 0)
- {
- if (sEnd < sStart)
- {
- pp_int32 s = sEnd; sEnd = sStart; sStart = s;
- }
- }
- }
- else
- {
- sStart = 0;
- sEnd = sample->samplen;
- }
- preFilter(&SampleEditor::tool_generateSine, par);
- mp_sint32 sLen = sEnd - sStart;
- prepareUndo();
- pp_int32 i;
- const float numPeriods = (float)(6.283185307179586476925286766559 * par->getParameter(1).floatPart);
- const float amplify = par->getParameter(0).floatPart;
- // generate sine wave here
- for (i = sStart; i < sEnd; i++)
- {
- float per = (i-sStart)/(float)sLen * numPeriods;
- setFloatSampleInWaveform(i, (float)sin(per)*amplify);
- }
- finishUndo();
- postFilter();
- }
- void SampleEditor::tool_generateSquare(const FilterParameters* par)
- {
- if (isEmptySample())
- return;
- pp_int32 sStart = selectionStart;
- pp_int32 sEnd = selectionEnd;
- if (hasValidSelection())
- {
- if (sStart >= 0 && sEnd >= 0)
- {
- if (sEnd < sStart)
- {
- pp_int32 s = sEnd; sEnd = sStart; sStart = s;
- }
- }
- }
- else
- {
- sStart = 0;
- sEnd = sample->samplen;
- }
- preFilter(&SampleEditor::tool_generateSquare, par);
- mp_sint32 sLen = sEnd - sStart;
- prepareUndo();
- pp_int32 i;
- const float numPeriods = par->getParameter(1).floatPart;
- const float amplify = par->getParameter(0).floatPart;
- // generate square wave here
- for (i = sStart; i < sEnd; i++)
- {
- float per = (i-sStart)/(float)sLen * numPeriods;
- float frac = per-(float)floor(per);
- setFloatSampleInWaveform(i, frac < 0.5f ? amplify : -amplify);
- }
- finishUndo();
- postFilter();
- }
- void SampleEditor::tool_generateTriangle(const FilterParameters* par)
- {
- if (isEmptySample())
- return;
- pp_int32 sStart = selectionStart;
- pp_int32 sEnd = selectionEnd;
- if (hasValidSelection())
- {
- if (sStart >= 0 && sEnd >= 0)
- {
- if (sEnd < sStart)
- {
- pp_int32 s = sEnd; sEnd = sStart; sStart = s;
- }
- }
- }
- else
- {
- sStart = 0;
- sEnd = sample->samplen;
- }
- preFilter(&SampleEditor::tool_generateTriangle, par);
- mp_sint32 sLen = sEnd - sStart;
- prepareUndo();
- pp_int32 i;
- const float numPeriods = par->getParameter(1).floatPart;
- const float amplify = par->getParameter(0).floatPart;
- // generate triangle wave here
- for (i = sStart; i < sEnd; i++)
- {
- float per = (i-sStart)/(float)sLen * numPeriods;
- float frac = per-(float)floor(per);
- if (frac < 0.25f)
- setFloatSampleInWaveform(i, (frac*4.0f)*amplify);
- else if (frac < 0.75f)
- setFloatSampleInWaveform(i, (1.0f-(frac-0.25f)*4.0f)*amplify);
- else
- setFloatSampleInWaveform(i, (-1.0f+(frac-0.75f)*4.0f)*amplify);
- }
- finishUndo();
- postFilter();
- }
- void SampleEditor::tool_generateSawtooth(const FilterParameters* par)
- {
- if (isEmptySample())
- return;
- pp_int32 sStart = selectionStart;
- pp_int32 sEnd = selectionEnd;
- if (hasValidSelection())
- {
- if (sStart >= 0 && sEnd >= 0)
- {
- if (sEnd < sStart)
- {
- pp_int32 s = sEnd; sEnd = sStart; sStart = s;
- }
- }
- }
- else
- {
- sStart = 0;
- sEnd = sample->samplen;
- }
- preFilter(&SampleEditor::tool_generateSawtooth, par);
- mp_sint32 sLen = sEnd - sStart;
- prepareUndo();
- pp_int32 i;
- const float numPeriods = par->getParameter(1).floatPart;
- const float amplify = par->getParameter(0).floatPart;
- // generate saw-tooth wave here
- for (i = sStart; i < sEnd; i++)
- {
- float per = (i-sStart)/(float)sLen * numPeriods;
- float frac = per-(float)floor(per);
- setFloatSampleInWaveform(i, frac < 0.5f ? (frac*2.0f)*amplify : (-1.0f+((frac-0.5f)*2.0f))*amplify);
- }
- finishUndo();
- postFilter();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement