AdjustFormants(): adjust the F2 target by a factor which depends on the voice pitch. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@55 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -158,6 +158,7 @@ edt $abbrev | |||
eg fO@Egz'aamp@L | |||
est $abbrev | |||
etc Et'sEtr@ | |||
eu $abbrev | |||
eur jU@ | |||
hmm h@m | |||
(http ://) eItSti:ti:'pi:_ |
@@ -364,6 +364,8 @@ résident Rezidt2 $verb | |||
évident evid'A~ | |||
évident evidt2 $verb | |||
couvent k'uvt2 $verb | |||
concurrent kO~kyR'A~ | |||
récurrent rekyR'A~ | |||
// MAIN WORD DICTIONARY | |||
@@ -408,7 +410,7 @@ secrets sYkR'E | |||
sens sA~s | |||
c'est sEt2 $u | |||
c'est sEt2 $u+ | |||
qu'à ka | |||
qu'y ki | |||
s'y si |
@@ -4,7 +4,7 @@ | |||
_0 nullA | |||
_1 EJ | |||
_2 kEttY: | |||
_3 ha:Rom | |||
_3 ha:R2om | |||
_4 ne:J | |||
_5 Yt | |||
_6 hAt | |||
@@ -15,7 +15,7 @@ _10 ti:z | |||
_1X tizEn | |||
_20 hu:s | |||
_2X huson | |||
_3X hARmints | |||
_3X hAR2mints | |||
_4X nEJvEn | |||
_5X YtvEn | |||
_6X hAtvAn | |||
@@ -25,15 +25,15 @@ _9X kilEntsvEn | |||
_0C sa:z | |||
_1C sa:z | |||
_0M1 EzER | |||
_1M1 EzER | |||
_2M1 ke:tEzER | |||
_0M1 EzER2 | |||
_1M1 EzER2 | |||
_2M1 ke:tEzER2 | |||
_0M2 millio: | |||
_1M2 millio: | |||
_2M2 ke:tmillio: | |||
_0M3 millia:Rd | |||
_1M3 millia:Rd | |||
_1M3 ke:tmillia:Rd | |||
_0M3 millia:R2d | |||
_1M3 millia:R2d | |||
_1M3 ke:tmillia:R2d | |||
_0M4 billio: | |||
_1M4 billio: | |||
_2M4 ke:tbillio: | |||
@@ -41,11 +41,11 @@ _dpt ||_vEss2Y:_ | |||
// Abbreviations | |||
km kilo:me:tER | |||
mm milime:tER | |||
km kilo:me:tER2 | |||
mm milime:tER2 | |||
a.m An^n^i||m'int $dot | |||
dr doktoR $dot | |||
dr doktoR2 $dot | |||
gpu $abbrev | |||
id idY:SEb: $dot | |||
ill illEdvE $dot | |||
@@ -58,11 +58,32 @@ u.n u:JnEvEzEt: $dot | |||
vö v'EZd||_'Yss2E | |||
ii kEttY: $abbrev | |||
iii ha:Rom $abbrev | |||
iii ha:R2om $abbrev | |||
iv ne:J $abbrev | |||
vi hAt $abbrev | |||
vii he:t $abbrev | |||
viii n^olts $abbrev | |||
ix kilEnts $abbrev | |||
xi tizEnEJ $abbrev | |||
xii tizEnkEttY: $abbrev | |||
xiii tizEnha:Rom $abbrev | |||
xiv tizEnne:J $abbrev | |||
xv tizEnYt $abbrev | |||
xvi tizEnhAt $abbrev | |||
xvii tizEnhe:t $abbrev | |||
xviii tizEnn^olts $abbrev | |||
xix tizEnkilEnts $abbrev | |||
xx hu:s $abbrev | |||
xxi husonEJ $abbrev | |||
xxii husonkEttY: $abbrev | |||
xxiii husonha:Rom $abbrev | |||
xxiv husonne:J $abbrev | |||
xxv husonYt $abbrev | |||
xxvi husonhAt $abbrev | |||
xxvii husonhe:t $abbrev | |||
xxviii husonn^olts $abbrev | |||
xxix husonkilEnts $abbrev | |||
xxx hARmints $abbrev | |||
// Articles | |||
@@ -141,9 +162,9 @@ közül $u | |||
közé $u | |||
között $u | |||
ba $u | |||
ba $u // into | |||
be $u | |||
ra $u | |||
ra $u // onto | |||
re $u | |||
ik $u | |||
as $u | |||
@@ -151,16 +172,16 @@ es $u | |||
os $u | |||
ós $u | |||
ös $u | |||
ból $u | |||
ból $u // from inside | |||
ből $u | |||
ról $u | |||
ről $u | |||
án $u | |||
én $u | |||
on $u | |||
on $u // on | |||
en $u | |||
ön $u | |||
szor $u | |||
szor $u // times | |||
szer $u | |||
ször $u | |||
@@ -174,17 +195,37 @@ se $u $pause // neither | |||
sem $u $pause // nor | |||
miatt $u $pause // because | |||
ban $u | |||
ban $u // in | |||
ben $u | |||
hoz $u | |||
hez $u | |||
höz $u | |||
ig $u | |||
nál $u | |||
ig $u // up to | |||
nál $u // by | |||
nél $u | |||
tól $u | |||
tól $u // from | |||
től $u | |||
be $u //into | |||
ki $u // out of | |||
le $u // down | |||
fel $u // up | |||
föl $u // up | |||
meg $u // finish an action | |||
el $u // away | |||
át $u //through | |||
rá $u //onto | |||
ide $u // here | |||
oda $u // there | |||
szét $u //apart | |||
össze $u //connect with | |||
vissza $u //back | |||
ellen $u //against | |||
volna $u // would | |||
részén $u //on ... part of | |||
// word pairs | |||
@@ -273,9 +314,9 @@ ny En^ | |||
_. pont | |||
% sa:zAle:k | |||
@ kukAts | |||
€ EuRo | |||
€ EuR2o | |||
+ plus | |||
§ pRARAgRAfuS | |||
§ pR2AR2AgR2AfuS | |||
@@ -15,7 +15,7 @@ | |||
bb b: | |||
biz (A b'iz, // bizalmas etc. | |||
biedermeier bi:dER2ma:jER2 | |||
.group c | |||
c ts | |||
cc ts: | |||
@@ -32,6 +32,8 @@ hierar) ch (i C | |||
mün) ch (en C | |||
maso) ch (istA C | |||
szé) ch tS | |||
_zi) ch (y tS | |||
kilen) c (sz ts | |||
kvar) c (sz ts | |||
@@ -50,7 +52,7 @@ hierar) ch (i C | |||
_szé) ché (ny tSe: | |||
_sto) ck (holm k | |||
_) church tSYRtS | |||
_) church tSYR2tS | |||
.group d | |||
@@ -140,7 +142,7 @@ _minde) gy (ik J: | |||
l l | |||
ly j | |||
lly jj | |||
lj jj | |||
lj lj | |||
C) ly (_ li | |||
_kéth) ly li | |||
@@ -196,15 +198,11 @@ szamue) ly lli | |||
qu kv | |||
.group r | |||
r R | |||
A) r (A R | |||
C) r (A R | |||
r (C R | |||
r (ó_ R2 | |||
r R2 | |||
rr RR | |||
_) richa (rd RiCa: | |||
_) richá (rd RiCa: | |||
_) richa (rd R2iCa: | |||
_) richá (rd R2iCa: | |||
.group s | |||
@@ -222,8 +220,10 @@ _munká) s S | |||
va) s (zabl S|| | |||
_) semmelweiss sEmmElvEjs | |||
engel) s s | |||
mu) ss (olini ss2 | |||
_) saar sa:R2 | |||
_) saar sa:R | |||
_wa) sh (ing S | |||
.group t | |||
@@ -258,6 +258,7 @@ _munká) s S | |||
A) tyj (A c: | |||
_ka) ty (n ti | |||
vörösmar) ty ti | |||
.group u | |||
@@ -282,7 +283,8 @@ _munká) s S | |||
x ks | |||
.group y | |||
y j | |||
_) y j | |||
y i | |||
K) y (K i | |||
.group z | |||
@@ -301,6 +303,8 @@ _munká) s S | |||
tű) z (sz z | |||
ví) z (sz z | |||
tor) z (szülött z | |||
tor) z (ság z | |||
_vité) z z | |||
ga) zs (ág zS | |||
_gá) zsz (ámla zs: | |||
@@ -312,7 +316,7 @@ _szára) zs (ág zS | |||
.group | |||
$ dolla:R | |||
$ dolla:R2 | |||
ä e | |||
æ e | |||
ß s |
@@ -49,7 +49,7 @@ _2 d'ue | |||
_3 tR'e | |||
_4 kw2'at:Ro | |||
_5 tS'inkw2e | |||
_6 s'ej | |||
_6 s'Ej | |||
_7 s'Et:e | |||
_8 'Ot:o | |||
_9 n'Ove | |||
@@ -63,7 +63,7 @@ _16 s'editSi | |||
_17 ditSas:'Et:e | |||
_18 ditS'Ot:o | |||
_19 ditSann'ove | |||
_2X v'ente | |||
_2X v'entj | |||
_3X t@-*'enta | |||
_4X kw2aR'anta | |||
_5X tSinkw2'anta | |||
@@ -123,8 +123,8 @@ li $u+ | |||
// words that double the following consonant | |||
qualche $double | |||
come $double | |||
qualche // $double | |||
come // $double | |||
// possessive adjectives | |||
mio $u | |||
@@ -163,9 +163,9 @@ quelle $u // those | |||
// conjunctions | |||
e $u $pause $double // and | |||
e $u $pause // $double // and | |||
ed $u $pause | |||
o $u $pause $double // or | |||
o $u $pause // $double // or | |||
se $pause // if | |||
ma $pause // but | |||
perché $pause // because | |||
@@ -182,7 +182,7 @@ che $u $pause // which | |||
// prepositions | |||
a $u $double | |||
a $u // $double | |||
al $u | |||
allo $u | |||
alla $u | |||
@@ -218,7 +218,7 @@ negli $u $brk | |||
nelle $u $brk | |||
ne $u $brk | |||
su $u $double // on | |||
su $u //$double // on | |||
sul $u | |||
sullo $u | |||
sulla $u // on the | |||
@@ -245,13 +245,13 @@ durante $pause // during | |||
// aux verb, to be | |||
sono $u | |||
sei $u | |||
è E $u $double | |||
è E $u //$double | |||
siamo $u | |||
siete $u | |||
sono $u | |||
fui $u | |||
fosti $u | |||
fu $u $double | |||
fu $u //$double | |||
fummo $u | |||
foste $u | |||
furono $u | |||
@@ -283,9 +283,9 @@ sareste $u | |||
sarebbero $u | |||
// aux verb, to have | |||
ho $u $double | |||
hai $u $double | |||
ha $u $double | |||
ho $u //$double | |||
hai $u //$double | |||
ha $u //$double | |||
abbiamo $u | |||
avete $u | |||
hanno $u | |||
@@ -368,8 +368,9 @@ tavol $1 $stem | |||
vent vEnt $stem | |||
celsius tsElsj'us | |||
conoscerla $1 | |||
conoscerla $2 | |||
no nO | |||
posta pOsta | |||
tesser tess'ER | |||
uomini $1 | |||
internet 'internet |
@@ -6,10 +6,28 @@ | |||
// ?2 Brazilian Portuguese | |||
// Letters | |||
// If a letter has a "word" pronunciation which is different from its | |||
// "letter" name, then include the letter name here, with the letter | |||
// prefixed by a _ character. | |||
// character names | |||
_á ,a&g'udU | |||
_à ,agR'avi | |||
_â ,asirkuNfl'EksU | |||
_ã ,atS'iU | |||
_ç s,esed'elj& | |||
_é ,e&g'udU | |||
_ê ,asirkuNfl'EksU | |||
_í ,i&g'udU | |||
_ó ,o&g'udU | |||
_ô ,osirkuNfl'EksU | |||
_õ ,otS'iU | |||
_ú ,u&g'udU | |||
_ü ,utR'em& | |||
_cap maI'uskulU | |||
_?A l'etR& | |||
_?? s'imbolU | |||
@@ -183,20 +201,19 @@ unts $abbrev | |||
usb $abbrev | |||
// roman numerals | |||
?1 ii d'oIs# $abbrev | |||
?1 ii d'oIs# $abbrev | |||
?1 iii tr'es# $abbrev | |||
?1 iv kw'atru $abbrev | |||
?1 iv kw'atru $abbrev | |||
dr $dot | |||
dra $dot | |||
mr $dot | |||
mrs $dot | |||
prof pr'Of $dot | |||
sr $dot | |||
?1 sra ,Es;'Errj'a $dot | |||
?2 sra $dot | |||
dr $dot | |||
dra $dot | |||
mr $dot | |||
mrs $dot | |||
prof pr'Of $dot | |||
sr $dot | |||
?1 sra ,Es;'Errj'a $dot | |||
?2 sra $dot | |||
// articles | |||
o $u+ | |||
@@ -502,34 +519,12 @@ há $u+ | |||
// Letter names | |||
// If a letter has a "word" pronunciation which is different from its | |||
// "letter" name, then include the letter name here, with the letter | |||
// prefixed by a _ character. | |||
// a e o à é can also be words | |||
_a a | |||
_e E | |||
_o O | |||
_à ,agR'avi | |||
_é ,e&g'udU | |||
a a $atend | |||
e E $atend // assume letter-e at end of sentence | |||
o O $atend | |||
à a $atend | |||
é E $atend | |||
_á ,a||&g'udU | |||
_â ,a||sirkuNfl'EksU | |||
_ã ,atS'iU | |||
_ç s,esed'elj& | |||
_è ,egR'avi | |||
_ê ,e||sirkuNfl'EksU | |||
_í ,i&g'udU | |||
_ó ,o&g'udU | |||
_ô ,o||sirkuNfl'EksU | |||
_õ ,otS'iU | |||
_ú ,u&g'udU | |||
_ü ,utR'em& | |||
// some common adjectives and adverbs | |||
@@ -600,7 +595,7 @@ roxo x'oSU | |||
?1 end 'end | |||
?1 escape Sk'eIpy | |||
?1 explorer ,ekspl'O:r&r- | |||
?2 explorer ekspl'O*er | |||
?2 Explorer ekspl'O*er | |||
?1 eyes 'aiz | |||
?1 frame fr'eImy | |||
?2 frame fR'eImi | |||
@@ -627,7 +622,7 @@ roxo x'oSU | |||
?2 maior maI'Or | |||
?1 menor myn'Or- | |||
?2 menor men'Or | |||
?2 mouse m'aUzi | |||
?2 mouse m'aUzi | |||
?1 menu menu | |||
?1 next n'Ekst | |||
ok Ok'eI | |||
@@ -645,8 +640,8 @@ roxo x'oSU | |||
?1 scroll sk:r'ol | |||
?1 site s'aIt | |||
?2 site s'aItSi | |||
?1 software s'Oft,w'Er- | |||
?2 software s'Oftwe@- | |||
?1 software s'Oft,w'Er- | |||
?2 software s'Oftwe@- | |||
?1 space sp'eIsy | |||
?1 sporting sp'Ort,ing | |||
?1 tab t'ab | |||
@@ -673,8 +668,8 @@ louis _^_FR | |||
espeak isp'i:k | |||
?1 espeakedit isp'i:kEd,it | |||
?1 fedora _^_EN | |||
?1 firefox f'ai&rfOks | |||
?2 firefox f'ai@fOks | |||
?1 firefox f'ai&rfOks | |||
?2 firefox f'ai@fOks | |||
?1 front fr'ont | |||
?1 jaws dZ'au:z | |||
?2 jaws dZ'Os | |||
@@ -691,6 +686,7 @@ louis _^_FR | |||
?1 office 'Of,is | |||
openoffice 'opeIN|'Ofis | |||
?1 outlook 'autl'uk | |||
?2 Outlook ,aUtl'uk | |||
?1 paint p'aint | |||
?1 player pl'eI&r- | |||
?1 point p'oint | |||
@@ -699,9 +695,10 @@ louis _^_FR | |||
?1 Publisher p'&bl,iS&r- | |||
?1 reader r'id,&r- | |||
?1 setup s'Et'&p | |||
?1 scout sk'aut // Nero scout | |||
?1 scout sk'aut // Nero scout | |||
?1 skype sk'aip | |||
slackware sl'akwe@ | |||
?2 Skype sk'aIp | |||
Slackware sl'akwe@- | |||
?1 smart sm'art // nero StartSmart | |||
speak spi:k | |||
suse z'u:ts@ |
@@ -137,7 +137,8 @@ | |||
e (be_ E | |||
e (bem_ E | |||
e (bes_ E | |||
e (ca_ E | |||
e (ca_ E | |||
e (ce_ E | |||
e (cem_ E | |||
e (ces_ E | |||
@@ -149,11 +150,15 @@ | |||
e (la_ E | |||
e (las_ E | |||
e (rA_ E | |||
e (rAm_ E | |||
e (rAs_ E | |||
e (rA_ E | |||
e (rAm_ E | |||
e (rAs_ E | |||
e (rsA_ E | |||
e (rsAm_ E | |||
e (rsAs_ E | |||
e (stA_ E | |||
e (stAm_ E | |||
e (stAs_ E | |||
@@ -206,6 +211,10 @@ e (rrA_ E | |||
eu (s eU | |||
e (uCK e | |||
j) e (tA_ E | |||
j) e (tAm_ E | |||
j) e (tAs_ E | |||
?1 _) es (C@@ S // drop initial "e". | |||
?1 _) e (f i // efectuar, etc. | |||
?1 _n) e (nhu i // eg: nenhum, nenhuma, nenhuns, nenhumas. | |||
@@ -399,7 +408,9 @@ e (rrA_ E | |||
?1 C) oo (_ ow // eg: voo, enjoo, etc... | |||
oy OI | |||
o (Ca_ O | |||
o (g_ O | |||
o (gs_ O | |||
o (Ca_ O | |||
?1 o (l_ 'O | |||
?2 ol (_ Ow | |||
?2 olh olj | |||
@@ -411,11 +422,11 @@ e (rrA_ E | |||
on (K oN | |||
o (na_ o | |||
onh on^ | |||
o (brA_ O | |||
o (brAm_ O | |||
o (brAs_ O | |||
o (brA_ O | |||
o (brAm_ O | |||
o (brAs_ O | |||
o (rCA_ O | |||
o (rCAm_ O | |||
o (rCAs_ O |
@@ -1,7 +1,7 @@ | |||
37 phoneme tables | |||
new total | |||
base 96 96 | |||
base2 24 114 | |||
base2 23 114 | |||
en 53 144 | |||
en_n 29 144 | |||
en_us 37 144 | |||
@@ -24,7 +24,7 @@ | |||
hr 19 129 | |||
sr 2 129 | |||
ru 36 124 | |||
it 16 117 | |||
it 17 117 | |||
la 21 114 | |||
es 6 114 | |||
pt 28 131 |
@@ -3,12 +3,6 @@ | |||
// Italian | |||
//==================================================== | |||
phoneme : // Lengthen previous vowel by "length" | |||
virtual | |||
length 70 | |||
endphoneme | |||
phoneme a |
@@ -3,6 +3,11 @@ | |||
// Italian | |||
//==================================================== | |||
phoneme : // Lengthen previous vowel by "length" | |||
virtual | |||
length 40 | |||
endphoneme | |||
phoneme a | |||
vowel starttype (a) endtype (a) |
@@ -154,7 +154,7 @@ endphoneme | |||
phoneme : // Lengthen previous vowel by "length" | |||
virtual | |||
length 60 | |||
length 70 | |||
endphoneme | |||
phoneme - // Indicates the previous phoneme is a syllabic consonant | |||
@@ -295,7 +295,7 @@ phoneme (o) virtual | |||
after l l/lo | |||
after L l/lo | |||
after l^ l^/j2o | |||
after r r/ro-15 | |||
after #r r/ro-15 | |||
after r- r2/r2o | |||
after m m/mo | |||
after n n/no | |||
@@ -318,7 +318,7 @@ phoneme (u) virtual | |||
after l l/lu | |||
after L l/lu | |||
after l^ l^/j2u | |||
after r r/ru-15 | |||
after #r r/ru-15 | |||
after r- r2/r2u | |||
after m m/mu | |||
after n n/nu | |||
@@ -1235,8 +1235,8 @@ phonemetable sw base | |||
include ph_swahili | |||
//phonemetable basef base | |||
//include pf | |||
phonemetable basef base | |||
include pf | |||
//phonemetable f_en basef | |||
//include pf_english | |||
phonemetable f_en basef | |||
include pf_english |
@@ -1,55 +0,0 @@ | |||
/*************************************************************************** | |||
* Copyright (C) 2004 by Jonathan Duddington * | |||
* [email protected] * | |||
* * | |||
* This program is free software; you can redistribute it and/or modify * | |||
* it under the terms of the GNU General Public License as published by * | |||
* the Free Software Foundation; either version 2 of the License, or * | |||
* (at your option) any later version. * | |||
* * | |||
* This program is distributed in the hope that it will be useful, * | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
* GNU General Public License for more details. * | |||
* * | |||
* You should have received a copy of the GNU General Public License * | |||
* along with this program; if not, write to the * | |||
* Free Software Foundation, Inc., * | |||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | |||
***************************************************************************/ | |||
#ifndef _VOICEEDIT_H_ | |||
#define _VOICEEDIT_H_ | |||
/** | |||
* @short Application Main Window | |||
* @author Jonathan Duddington <[email protected]> | |||
* @version 0.1 | |||
*/ | |||
class | |||
voiceeditapp : public wxApp | |||
{ | |||
public: | |||
virtual bool OnInit(); | |||
}; | |||
class | |||
voiceeditFrame : public wxFrame | |||
{ | |||
public: | |||
voiceeditFrame( const wxString& title, const wxPoint& pos, const wxSize& pos ); | |||
void OnQuit( wxCommandEvent& event ); | |||
void OnAbout( wxCommandEvent& event ); | |||
private: | |||
DECLARE_EVENT_TABLE() | |||
}; | |||
enum | |||
{ | |||
Menu_File_Quit = 100, | |||
Menu_File_About | |||
}; | |||
#endif // _VOICEEDIT_H_ |
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.26.10 23.Jun.07"; | |||
const char *version_string = "1.26.11 26.Jun.07"; | |||
const int version_phdata = 0x012601; | |||
int option_device_number = -1; |
@@ -403,6 +403,8 @@ static void AdjustFormants(frame_t *fr, int target, int min, int max, int f1_adj | |||
//hf_reduce = 70; // ?? using fixed amount rather than the parameter?? | |||
target = (target * voice->formant_factor)/256; | |||
x = (target - fr->ffreq[2]) / 2; | |||
if(x > max) x = max; | |||
if(x < min) x = min; |
@@ -36,7 +36,8 @@ typedef struct { | |||
int echo_amp; | |||
int n_harmonic_peaks; // highest formant which is formed from adding harmonics | |||
int peak_shape; // alternative shape for formant peaks (0=standard 1=squarer) | |||
int voicing; // 100% = 64, level of formant-synthesized sound | |||
int voicing; // 100% = 64, level of formant-synthesized sound | |||
int formant_factor; // adjust nominal formant frequencies by this because of the voice's pitch (256ths) | |||
// parameters used by Wavegen | |||
int freq[N_PEAKS]; // 100% = 256 |
@@ -366,6 +366,7 @@ void VoiceReset(int tone_only) | |||
// default is: pitch 82,118 | |||
voice->pitch_base = 0x49000; // default, 73 << 12; | |||
voice->pitch_range = 0x0f30; // default = 0x1000 | |||
voice->formant_factor = 256; | |||
voice->echo_delay = 0; | |||
voice->echo_amp = 0; | |||
@@ -681,10 +682,15 @@ voice_t *LoadVoice(const char *vname, int control) | |||
break; | |||
case V_PITCH: | |||
{ | |||
double factor; | |||
// default is pitch 82 118 | |||
n = sscanf(p,"%d %d",&pitch1,&pitch2); | |||
voice->pitch_base = (pitch1 - 9) << 12; | |||
voice->pitch_range = (pitch2 - pitch1) * 108; | |||
factor = float(pitch1 - 82)/82; | |||
voice->formant_factor = (1+factor/4) * 256; | |||
} | |||
break; | |||
case V_STRESSLENGTH: // stressLength |
@@ -1110,6 +1110,8 @@ static int Wavegen() | |||
hswitch = 0; | |||
harmspect = hspect[0]; | |||
maxh2 = PeaksToHarmspect(peaks,pitch<<4,hspect[0],0); | |||
// adjust amplitude to compensate for fewer harmonics at higher pitch | |||
amplitude2 = (amplitude * pitch)/(100 << 12); | |||
// switch sign of harmonics above about 900Hz, to reduce max peak amplitude |