Comments and constants

This commit is contained in:
Takeshi Yokemura 2021-08-16 14:35:28 +09:00
parent 88dea8e989
commit 05e27d0da6
2 changed files with 14 additions and 10 deletions

View File

@ -36,9 +36,9 @@ void TonalVoice::startNote (int midiNoteNumber, float velocity, SynthesiserSound
arpeggioFrameTimer = 0;
arpeggioFrameLength = 0;
currentNumNoteBuffer = 0;
for (int i=0; i<10; i++) { noteBuffer[i] = 0; }
for (int i=0; i<NUMNOTEBUFFER; i++) { noteBuffer[i] = 0; }
currentNumRetireBuffer = 0;
for (int i=0; i<10; i++) { retireBuffer[i] = 0; }
for (int i=0; i<NUMNOTEBUFFER; i++) { retireBuffer[i] = 0; }
}
void TonalVoice::advanceControlFrame()
@ -108,7 +108,7 @@ void TonalVoice::setLegatoMode(double time, int midiCh) {
// The interface says "add" but the implementation is just using the latest value.
// It is because the original intension was to keep all the pressing keys and choose the apropriate one with certain algorithm
void TonalVoice::addLegatoNote (int midiNoteNumber, float velocity) {
if (currentNumNoteBuffer >= 10) {
if (currentNumNoteBuffer >= NUMNOTEBUFFER) {
return;
}
@ -143,7 +143,7 @@ void TonalVoice::setArpeggioMode(double interval, int midiCh)
void TonalVoice::addArpeggioNoteAscending(int midiNoteNumber)
{
if (currentNumNoteBuffer >= 10) {
if (currentNumNoteBuffer >= NUMNOTEBUFFER) {
return;
}
int i;
@ -158,7 +158,7 @@ void TonalVoice::addArpeggioNoteAscending(int midiNoteNumber)
void TonalVoice::addArpeggioNoteDescending(int midiNoteNumber)
{
if (currentNumNoteBuffer >= 10) {
if (currentNumNoteBuffer >= NUMNOTEBUFFER) {
return;
}
int i;
@ -179,22 +179,24 @@ int TonalVoice::removeArpeggioNote(int midiNoteNumber)
}
// Just push the note number to Retire Buffer
// Actual retirement happens in advanceFrameBuffer
retireBuffer[currentNumRetireBuffer] = midiNoteNumber;
currentNumRetireBuffer++;
// Observed like current number of notes already decreased
// so the Synthsizer can determine if it should enter Release phase
return currentNumNoteBuffer - currentNumRetireBuffer;
}
void TonalVoice::pushNoteBuffer(int index, int value) {
for (int i=9; i>index; i--) {
for (int i=NUMNOTEBUFFER-1; i>index; i--) {
noteBuffer[i] = noteBuffer[i-1];
}
noteBuffer[index] = value;
}
void TonalVoice::shiftNoteBuffer(int index) {
for (int i=index; i<9; i++) {
for (int i=index; i<NUMNOTEBUFFER-1; i++) {
noteBuffer[i] = noteBuffer[i+1];
}
}
@ -267,7 +269,7 @@ void TonalVoice::onFrameAdvanced()
// Clear Retire Buffer
currentNumRetireBuffer = 0;
for (int i=0; i<10; i++) { retireBuffer[i] = 0; }
for (int i=0; i<NUMNOTEBUFFER; i++) { retireBuffer[i] = 0; }
} /* else {
Retirements should not happen in Release Phase
to keep the arpeggio playing during the release.

View File

@ -11,6 +11,8 @@
#pragma once
#include "BaseVoice.h"
#define NUMNOTEBUFFER 10
struct TonalVoice : public BaseVoice // The base for Pulse and Triangle
{
TonalVoice (SettingRefs* sRefs);
@ -36,7 +38,7 @@ struct TonalVoice : public BaseVoice // The base for Pulse and Triangle
int currentPitchSequenceFrame = 0;
// Legato/Arpeggio
int noteBuffer[10];
int noteBuffer[NUMNOTEBUFFER];
int currentNumNoteBuffer = 0;
int primaryMidiChannel = 1;
@ -47,7 +49,7 @@ struct TonalVoice : public BaseVoice // The base for Pulse and Triangle
int currentArpeggioFrame = 0;
double arpeggioFrameTimer = 0;
double arpeggioFrameLength = 0; // Unit: seconds. Set non-zero value to enable arpeggio
int retireBuffer[10];
int retireBuffer[NUMNOTEBUFFER];
int currentNumRetireBuffer = 0;
void startNote (int midiNoteNumber, float velocity,