GUI: format
This commit is contained in:
parent
8be5e5a9e6
commit
78fc022c04
|
@ -566,7 +566,6 @@ void FurnaceGUI::drawWaveEdit() {
|
||||||
if (CWSliderInt("##WGInterpolation",&waveInterpolation,0,3,waveInterpolations[waveInterpolation])) {
|
if (CWSliderInt("##WGInterpolation",&waveInterpolation,0,3,waveInterpolations[waveInterpolation])) {
|
||||||
if (waveInterpolation<0) waveInterpolation=0;
|
if (waveInterpolation<0) waveInterpolation=0;
|
||||||
if (waveInterpolation>3) waveInterpolation=3;
|
if (waveInterpolation>3) waveInterpolation=3;
|
||||||
//doGenerateWave();
|
|
||||||
}
|
}
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
if (ImGui::Button("Scale X")) {
|
if (ImGui::Button("Scale X")) {
|
||||||
|
@ -574,9 +573,8 @@ void FurnaceGUI::drawWaveEdit() {
|
||||||
int origData[256];
|
int origData[256];
|
||||||
// Copy original wave to temp buffer
|
// Copy original wave to temp buffer
|
||||||
// If longer than 256 samples, return
|
// If longer than 256 samples, return
|
||||||
if (wave->len > 256)
|
if (wave->len>256) {
|
||||||
{
|
showError("wavetable longer than 256 samples!");
|
||||||
showError("ERROR : Wavetable longer than 256 samples!");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
memcpy(origData,wave->data,wave->len*sizeof(int));
|
memcpy(origData,wave->data,wave->len*sizeof(int));
|
||||||
|
@ -584,48 +582,46 @@ void FurnaceGUI::drawWaveEdit() {
|
||||||
float t=0; // Index used into `origData`
|
float t=0; // Index used into `origData`
|
||||||
|
|
||||||
for (int i=0; i<waveGenScaleX; i++, t+=(float)wave->len/waveGenScaleX) {
|
for (int i=0; i<waveGenScaleX; i++, t+=(float)wave->len/waveGenScaleX) {
|
||||||
|
switch (waveInterpolation) {
|
||||||
switch (waveInterpolation)
|
case 0: {
|
||||||
{
|
|
||||||
default: // No interpolation
|
|
||||||
{
|
|
||||||
wave->data[i] = origData[i * wave->len / waveGenScaleX];
|
|
||||||
break; // No interpolation
|
|
||||||
}
|
|
||||||
case 0:
|
|
||||||
{
|
|
||||||
wave->data[i]=origData[i*wave->len/waveGenScaleX];
|
wave->data[i]=origData[i*wave->len/waveGenScaleX];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 1: // Linear
|
case 1: { // Linear
|
||||||
{
|
|
||||||
int idx=t; // Implicitly floors `t`
|
int idx=t; // Implicitly floors `t`
|
||||||
int s0 = origData[(idx) % wave->len], s1 = origData[(idx + 1) % wave->len];
|
int s0=origData[(idx)%wave->len];
|
||||||
|
int s1=origData[(idx+1)%wave->len];
|
||||||
double mu=(t-idx);
|
double mu=(t-idx);
|
||||||
wave->data[i]=s0+mu*s1-(mu*s0);
|
wave->data[i]=s0+mu*s1-(mu*s0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2: // Cosine
|
case 2: { // Cosine
|
||||||
{
|
|
||||||
int idx=t; // Implicitly floors `t`
|
int idx=t; // Implicitly floors `t`
|
||||||
int s0 = origData[(idx) % wave->len], s1 = origData[(idx + 1) % wave->len];
|
int s0=origData[(idx)%wave->len];
|
||||||
|
int s1=origData[(idx+1)%wave->len];
|
||||||
double mu=(t-idx);
|
double mu=(t-idx);
|
||||||
double muCos=(1-cos(mu*M_PI))/2;
|
double muCos=(1-cos(mu*M_PI))/2;
|
||||||
wave->data[i]=s0+muCos*s1-(muCos*s0);
|
wave->data[i]=s0+muCos*s1-(muCos*s0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3: // Cubic Spline
|
case 3: { // Cubic Spline
|
||||||
{
|
|
||||||
int idx=t; // Implicitly floors `t`
|
int idx=t; // Implicitly floors `t`
|
||||||
int s0 = origData[((idx - 1 % wave->len + wave->len) % wave->len)], s1 = origData[(idx) % wave->len], s2 = origData[(idx + 1) % wave->len], s3 = origData[(idx + 2) % wave->len];
|
int s0=origData[((idx-1%wave->len+wave->len)%wave->len)];
|
||||||
double a0, a1, a2, a3;
|
int s1=origData[(idx)%wave->len];
|
||||||
|
int s2=origData[(idx+1)%wave->len];
|
||||||
|
int s3=origData[(idx+2)%wave->len];
|
||||||
double mu=(t-idx);
|
double mu=(t-idx);
|
||||||
double mu2=mu*mu;
|
double mu2=mu*mu;
|
||||||
a0 = -0.5 * s0 + 1.5 * s1 - 1.5 * s2 + 0.5 * s3;
|
double a0=-0.5*s0+1.5*s1-1.5*s2+0.5*s3;
|
||||||
a1 = s0 - 2.5 * s1 + 2 * s2 - 0.5 * s3;
|
double a1=s0-2.5*s1+2*s2-0.5*s3;
|
||||||
a2 = -0.5 * s0 + 0.5 * s2;
|
double a2=-0.5*s0+0.5*s2;
|
||||||
a3 = s1;
|
double a3=s1;
|
||||||
wave->data[i]=(a0*mu*mu2+a1*mu2+a2*mu+a3);
|
wave->data[i]=(a0*mu*mu2+a1*mu2+a2*mu+a3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: { // No interpolation
|
||||||
|
wave->data[i]=origData[i*wave->len/waveGenScaleX];
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue