rhdunn / klatt Goto Github PK
View Code? Open in Web Editor NEWderivative of the klatt 3.04 synthesizer
Home Page: http://reecedunn.co.uk/klatt
License: GNU General Public License v3.0
derivative of the klatt 3.04 synthesizer
Home Page: http://reecedunn.co.uk/klatt
License: GNU General Public License v3.0
According to the Klatt 1990 paper, the F0 flutter delta should be calculated using modulation frequencies of 12.7 Hz, 7.1 Hz and 4.7 Hz The current implementation uses the time_count
variable to calculate the amplitudes of these frequencies:
flc = sin(2*M_PI*12.7*time_count);
fld = sin(2*M_PI*7.1*time_count);
fle = sin(2*M_PI*4.7*time_count);
But time_count
is incremented once per frame and therefore contains Hz * 100 and not Hz (the unit of time_count
is 10ms instead of 1s). So the F0 modulation frequencies are actually too high by a factor of 100.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The F0 flutter value, calculated with the 3 sine waves of 12.7, 7.1 and 4.7 Hz, is applied incrementally:
frame->F0hz10 = frame->F0hz10 + (long) delta_f0;
But according to the Klatt 1990 paper, the computed value is already the absolute F0 delta at a specific point in time. It's not a value that has to be integrated over time. The integration has the effect, that F0 wanders around unlimited.
I'm assuming that Klatt never released the source code of this F0 frequency modulation, so we can't refer to the original source code.
The documentation states:
1 = impulse train. 2 = natural simulation. 3 = natural samples
The old source code was:
#define IMPULSIVE 1
#define NATURAL 2
#define SAMPLED 3
The new source code assigns enum values starting with 0:
typedef enum
{
IMPULSIVE,
NATURAL,
SAMPLED,
} klatt_voicing_source_t;
A fix could be either to specify a start value of 1 for the enum:
typedef enum
{
IMPULSIVE = 1,
...
or to subtract 1 from the argument passed on the command line:
case 'v':
globals->glsource = (flag) atoi(optarg) - 1;
break;
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Running example1.par causes a sound spike near the end and example2.par is completely unintelligible when using cascade synthesis. Parallel synthesis works fine.
NOTE: This is also the case with the original 3.03 and 3.04 klatt sources.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Example1.par and example2.par generate waveforms are just noise or my operation is wrong?? Is there an example to generate a vowel, word or sentence?
--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/35663994-synthesized-example?utm_campaign=plugin&utm_content=tracker%2F254965&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F254965&utm_medium=issues&utm_source=github).The constant MAX_SAM
(Maximum sample rate = 20000) is used to allocate the iwave
buffer:
iwave = (int*) malloc(sizeof(int)*MAX_SAM);
But the iwave
buffer is used for nspfr entries:
globals->nspfr = (globals->samrate * nmspf_def) / 1000;
for (globals->ns=0; globals->ns < globals->nspfr; globals->ns++)
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.