mirror of
https://github.com/yokemura/Magical8bitPlug2.git
synced 2025-07-17 11:04:16 -04:00
Added code
This commit is contained in:
62
Source/PulseVoice.cpp
Normal file
62
Source/PulseVoice.cpp
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
PulseVoice.cpp
|
||||
Created: 11 Nov 2019 9:36:51pm
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "PulseVoice.h"
|
||||
|
||||
//---------------------------------------------
|
||||
//
|
||||
// Pulse Voice
|
||||
//
|
||||
//---------------------------------------------
|
||||
PulseVoice::PulseVoice (SettingRefs* sRefs) : TonalVoice (sRefs) {}
|
||||
|
||||
void PulseVoice::startNote (int midiNoteNumber, float velocity, SynthesiserSound*, int currentPitchBendPosition)
|
||||
{
|
||||
TonalVoice::startNote (midiNoteNumber, velocity, 0, currentPitchBendPosition);
|
||||
|
||||
currentDutySequenceFrame = 0;
|
||||
currentDuty = (PulseDuty) ((int) (*settingRefs->duty));
|
||||
}
|
||||
|
||||
float PulseVoice::voltageForAngle (double angle)
|
||||
{
|
||||
float rate = 1.0;
|
||||
|
||||
switch (currentDuty)
|
||||
{
|
||||
case kPulseDuty125:
|
||||
rate = 0.25;
|
||||
break;
|
||||
|
||||
case kPulseDuty250:
|
||||
rate = 0.50;
|
||||
break;
|
||||
|
||||
case kPulseDuty500:
|
||||
rate = 1.00;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return angle < rate * MathConstants<float>::pi ? -1.0 : 1.0;
|
||||
}
|
||||
|
||||
void PulseVoice::advanceControlFrame()
|
||||
{
|
||||
TonalVoice::advanceControlFrame();
|
||||
|
||||
if (settingRefs->isDutySequenceEnabled())
|
||||
{
|
||||
currentDutySequenceFrame = settingRefs->dutySequence.nextIndexOf (currentDutySequenceFrame);
|
||||
currentDuty = (PulseDuty)settingRefs->dutySequence.valueAt (currentDutySequenceFrame);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user