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