mirror of https://github.com/dcoredump/dexed.git
parent
0d6edb7f4f
commit
6a3ad57f1f
@ -0,0 +1,35 @@ |
|||||||
|
/*
|
||||||
|
Copyright 2019 Jean Pierre Cimalando. |
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
you may not use this file except in compliance with the License. |
||||||
|
You may obtain a copy of the License at |
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software |
||||||
|
distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
See the License for the specific language governing permissions and |
||||||
|
limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <math.h> |
||||||
|
#include "porta.h" |
||||||
|
#include "msfa/synth.h" |
||||||
|
|
||||||
|
void Porta::init_sr(double sampleRate) |
||||||
|
{ |
||||||
|
// compute portamento for CC 7-bit range
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < 128; ++i) { |
||||||
|
// number of semitones travelled
|
||||||
|
double sps = 350.0 * pow(2.0, -0.062 * i); // per second
|
||||||
|
double spf = sps / sampleRate; // per frame
|
||||||
|
double spp = spf * N; // per period
|
||||||
|
const int step = (1 << 24) / 12; |
||||||
|
rates[i] = (int32_t)(0.5f + step * spp); // to pitch units
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
int32_t Porta::rates[128]; |
@ -0,0 +1,28 @@ |
|||||||
|
/*
|
||||||
|
Copyright 2019 Jean Pierre Cimalando. |
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
you may not use this file except in compliance with the License. |
||||||
|
You may obtain a copy of the License at |
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software |
||||||
|
distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
See the License for the specific language governing permissions and |
||||||
|
limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef SYNTH_PORTA_H_ |
||||||
|
#define SYNTH_PORTA_H_ |
||||||
|
|
||||||
|
#include <stdint.h> |
||||||
|
|
||||||
|
struct Porta { |
||||||
|
public: |
||||||
|
static void init_sr(double sampleRate); |
||||||
|
static int32_t rates[128]; |
||||||
|
}; |
||||||
|
|
||||||
|
#endif // SYNTH_PORTA_H_
|
Loading…
Reference in new issue