21 template <
unsigned int CONTROL_UPDATE_RATE>
30 MICROS_PER_CONTROL_STEP(1000000/CONTROL_UPDATE_RATE)
40 control_steps_per_portamento = convertMsecToControlSteps(milliseconds);
48 target_freq = Q16n16_mtof(Q8n0_to_Q16n16(note));
49 aPortamentoLine.set(target_freq, control_steps_per_portamento);
50 countdown = control_steps_per_portamento;
60 aPortamentoLine.set(target_freq, control_steps_per_portamento);
61 countdown = control_steps_per_portamento;
73 if (portamento_on==
true){
76 aPortamentoLine.set(target_freq, target_freq, control_steps_per_portamento);
80 return aPortamentoLine.next();
86 int control_steps_per_portamento;
89 const unsigned int MICROS_PER_CONTROL_STEP;
95 static const unsigned int convertMsecToControlSteps(
unsigned int msec){
96 return (uint16_t) (((uint32_t)msec*CONTROL_UPDATE_RATE)>>10);