mirror of
https://github.com/libretro/stella2023.git
synced 2025-02-22 10:22:14 +00:00
Some massive pruning of the rsynth codebase. Hopefully I haven't removed
anything that was necessary. Changed AtariVox code to be a compile-time option, and integrated rsynth code into the 'Stella build' style, with a module.mk file. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1112 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
815a111b25
commit
758a4ed3ff
@ -13,7 +13,7 @@
|
||||
## See the file "license" for information on usage and redistribution of
|
||||
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
##
|
||||
## $Id: Makefile,v 1.25 2006-06-11 07:13:19 urchlay Exp $
|
||||
## $Id: Makefile,v 1.26 2006-06-11 21:49:04 stephena Exp $
|
||||
##
|
||||
## Based on code from ScummVM - Scumm Interpreter
|
||||
## Copyright (C) 2002-2004 The ScummVM project
|
||||
@ -28,7 +28,7 @@ srcdir ?= .
|
||||
DEFINES :=
|
||||
LDFLAGS :=
|
||||
INCLUDES :=
|
||||
LIBS := -Lsrc/emucore -lrsynth
|
||||
LIBS :=
|
||||
OBJS :=
|
||||
PROF :=
|
||||
|
||||
@ -67,7 +67,6 @@ endif
|
||||
#######################################################################
|
||||
|
||||
EXECUTABLE := stella$(EXEEXT)
|
||||
RSYNTH = src/emucore/librsynth.a
|
||||
|
||||
all: tags $(EXECUTABLE)
|
||||
|
||||
@ -93,10 +92,6 @@ MODULES += \
|
||||
src/gui \
|
||||
src/common
|
||||
|
||||
$(RSYNTH): $(RSYNTH_OBJS)
|
||||
( cd src/emucore/rsynth && ./configure && make Rsynth/librsynth.a ) && \
|
||||
cp src/emucore/rsynth/Rsynth/librsynth.a src/emucore
|
||||
|
||||
######################################################################
|
||||
# The build rules follow - normally you should have no need to
|
||||
# touch whatever comes after here.
|
||||
@ -113,7 +108,7 @@ DEPDIRS = $(addsuffix /$(DEPDIR),$(MODULE_DIRS))
|
||||
DEPFILES =
|
||||
|
||||
# The build rule for the Stella executable
|
||||
$(EXECUTABLE): $(OBJS) $(RSYNTH)
|
||||
$(EXECUTABLE): $(OBJS)
|
||||
$(LD) $(LDFLAGS) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) $(PROF) -o $@
|
||||
|
||||
distclean: clean
|
||||
|
24
stella/configure
vendored
24
stella/configure
vendored
@ -27,6 +27,7 @@ _build_joystick=yes
|
||||
_build_cheats=yes
|
||||
_build_static=no
|
||||
_build_profile=no
|
||||
_build_atarivox=yes
|
||||
|
||||
# more defaults
|
||||
_ranlib=ranlib
|
||||
@ -265,6 +266,8 @@ Optional Features:
|
||||
--disable-joystick
|
||||
--enable-cheats enable/disable cheatcode support [enabled]
|
||||
--disable-cheats
|
||||
--enable-atarivox enable/disable AtariVox support [enabled]
|
||||
--disable-atarivox
|
||||
--enable-shared build shared binary [enabled]
|
||||
--enable-static build static binary (if possible) [disabled]
|
||||
--disable-static
|
||||
@ -280,8 +283,8 @@ Optional Libraries:
|
||||
|
||||
--with-sdl-prefix=DIR Prefix where the sdl-config script is installed (optional)
|
||||
|
||||
--with-nasm-prefix=DIR Prefix where nasm executable is installed (optional)
|
||||
--disable-nasm disable assembly language optimizations [autodetect]
|
||||
# --with-nasm-prefix=DIR Prefix where nasm executable is installed (optional)
|
||||
# --disable-nasm disable assembly language optimizations [autodetect]
|
||||
|
||||
--x-libraries Path to X11 libraries [${X_LIBS}]
|
||||
|
||||
@ -312,6 +315,8 @@ for ac_option in $@; do
|
||||
--disable-joystick) _build_joystick=no ;;
|
||||
--enable-cheats) _build_cheats=yes ;;
|
||||
--disable-cheats) _build_cheats=no ;;
|
||||
--enable-atarivox) _build_atarivox=yes ;;
|
||||
--disable-atarivox) _build_atarivox=no ;;
|
||||
--enable-zlib) _zlib=yes ;;
|
||||
--disable-zlib) _zlib=no ;;
|
||||
--enable-png) _png=yes ;;
|
||||
@ -739,6 +744,14 @@ else
|
||||
echo
|
||||
fi
|
||||
|
||||
if test "$_build_atarivox" = yes ; then
|
||||
echo_n " AtariVox support enabled"
|
||||
echo
|
||||
else
|
||||
echo_n " AtariVox support disabled"
|
||||
echo
|
||||
fi
|
||||
|
||||
if test "$_build_static" = yes ; then
|
||||
echo_n " Static binary enabled"
|
||||
echo
|
||||
@ -770,6 +783,7 @@ DBG="$SRC/debugger"
|
||||
DBGGUI="$SRC/debugger/gui"
|
||||
YACC="$SRC/yacc"
|
||||
CHEAT="$SRC/cheat"
|
||||
ATARIVOX="$SRC/emucore/rsynth"
|
||||
|
||||
INCLUDES="-I$CORE -I$CORE/m6502/src -I$CORE/m6502/src/bspf/src -I$COMMON -I$GUI"
|
||||
|
||||
@ -882,6 +896,12 @@ if test "$_build_cheats" = yes ; then
|
||||
INCLUDES="$INCLUDES -I$CHEAT"
|
||||
fi
|
||||
|
||||
if test "$_build_atarivox" = yes ; then
|
||||
DEFINES="$DEFINES -DATARIVOX_SUPPORT"
|
||||
MODULES="$MODULES $ATARIVOX"
|
||||
INCLUDES="$INCLUDES -I$ATARIVOX"
|
||||
fi
|
||||
|
||||
if test "$_build_profile" = no ; then
|
||||
_build_profile=
|
||||
fi
|
||||
|
@ -13,7 +13,7 @@
|
||||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: SpeakJet.cxx,v 1.1 2006-06-11 07:13:19 urchlay Exp $
|
||||
// $Id: SpeakJet.cxx,v 1.2 2006-06-11 21:49:04 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include "SpeakJet.hxx"
|
||||
@ -160,4 +160,3 @@ const char *SpeakJet::ourPhonemeTable[] = {
|
||||
"p", // 198 PE People, Computer
|
||||
"p" // 199 PO Paw, Copy ???
|
||||
};
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: SpeakJet.hxx,v 1.1 2006-06-11 07:13:19 urchlay Exp $
|
||||
// $Id: SpeakJet.hxx,v 1.2 2006-06-11 21:49:04 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#ifndef SPEAKJET_HXX
|
||||
@ -75,16 +75,14 @@
|
||||
anyway).
|
||||
|
||||
@author B. Watson
|
||||
@version $Id: SpeakJet.hxx,v 1.1 2006-06-11 07:13:19 urchlay Exp $
|
||||
@version $Id: SpeakJet.hxx,v 1.2 2006-06-11 21:49:04 stephena Exp $
|
||||
*/
|
||||
|
||||
#include "bspf.hxx"
|
||||
|
||||
extern "C" {
|
||||
#include <SDL.h>
|
||||
#include <SDL_thread.h>
|
||||
#include "rsynth/rsynth.h"
|
||||
}
|
||||
|
||||
class SpeakJet
|
||||
{
|
||||
|
@ -1 +0,0 @@
|
||||
yes
|
@ -1,741 +0,0 @@
|
||||
Change 2707 on 2003/07/06 by nick@llama
|
||||
|
||||
SuSE 8.2 and gcc-3.* support
|
||||
Mainly adding -fno-scrict-aliasing and removing -Werrors (for now)
|
||||
|
||||
Change 2636 on 2003/01/08 by nick@nickwork
|
||||
|
||||
Some tidy up on RedHat 7.1
|
||||
|
||||
Change 2635 on 2003/01/07 by nick@dromedary
|
||||
|
||||
Depends on Audio::Data
|
||||
|
||||
Change 2630 on 2003/01/05 by nick@dromedary
|
||||
|
||||
Decouple dict (and hence db routines) from rest of
|
||||
text-to-phones stuff.
|
||||
|
||||
Change 2629 on 2003/01/05 by nick@dromedary
|
||||
|
||||
Restore ability to make CC=g++
|
||||
|
||||
Change 2628 on 2003/01/05 by nick@dromedary
|
||||
|
||||
Perl bindings for librsynth.a
|
||||
|
||||
Change 2627 on 2003/01/05 by nick@dromedary
|
||||
|
||||
Move Elements.pm under perl Rsynth dir
|
||||
|
||||
Change 2626 on 2003/01/04 by nick@dromedary
|
||||
|
||||
Nearly there - restructure once more to make
|
||||
a usable library at two levels - text and phonetics
|
||||
|
||||
Change 2625 on 2003/01/04 by nick@dromedary
|
||||
|
||||
More cleanup of obsolete files.
|
||||
|
||||
Change 2624 on 2003/01/04 by nick@bactrian
|
||||
|
||||
Typo in ansi-izeing
|
||||
|
||||
Change 2623 on 2003/01/04 by nick@dromedary
|
||||
|
||||
Moderernize autoconf stuff
|
||||
|
||||
Change 2622 on 2003/01/04 by nick@dromedary
|
||||
|
||||
Cleanup and move things about so distribution
|
||||
isn't full of my junk
|
||||
|
||||
Change 2621 on 2003/01/03 by nick@dromedary
|
||||
|
||||
More C++ isms and memory leak fixes.
|
||||
|
||||
Change 2620 on 2003/01/03 by nick@dromedary
|
||||
|
||||
More pickyness from build with CC=g++
|
||||
|
||||
Change 2619 on 2003/01/03 by nick@dromedary
|
||||
|
||||
More API cleanup and portability.
|
||||
|
||||
Change 2618 on 2003/01/03 by nick@bactrian
|
||||
|
||||
Correct dependancies
|
||||
|
||||
Change 2617 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Lost edit
|
||||
|
||||
Change 2616 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Re-structure API to remove most of the globals
|
||||
(Also re-indent.)
|
||||
|
||||
Change 2615 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Comments etc. after amp_adj changes.
|
||||
|
||||
Change 2614 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Remove sops to K&R C - this is 21st century.
|
||||
|
||||
Change 2613 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Move amp adjsutments into Elements.def
|
||||
Convert 'an' to nasal fraction.
|
||||
Loose 'a1' as it never does anything in cascade scheme.
|
||||
|
||||
Change 2612 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Collect all dB adjustments of /^a\w+/ paramters into one place.
|
||||
|
||||
Change 2611 on 2003/01/02 by nick@dromedary
|
||||
|
||||
[E] and [{] seemed to be swapped.
|
||||
Extraction of F1..F3 from CD is less helpful than expected
|
||||
very hard to get John and Jill's cardinal vowels to look
|
||||
right on tkvdgm.
|
||||
|
||||
Change 2610 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Tweak near-equivalence script, avoid $Id: Change.log,v 1.1 2006-06-11 07:13:19 urchlay Exp $ in phtoelm.def
|
||||
|
||||
Change 2609 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Re-arange code to allow dominance on a per-paramter basis
|
||||
|
||||
Change 2608 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Avoid special elements for affricates where lengths of normal
|
||||
elements sound acceptable.
|
||||
Loose "QQ" as dummy target element in middle of fricatives.
|
||||
(Prepare QQ to become [?] when we can do per-parameter rank
|
||||
targeting.)
|
||||
Correct av for closure parts of voiced stops.
|
||||
|
||||
Change 2607 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Read new Elements.def format
|
||||
|
||||
Change 2606 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Loose dict/ipa strings in favour of one sampa string.
|
||||
Make font slot short and fill with Unicode.
|
||||
|
||||
Change 2605 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Re-format without "error in fixed" term now we don't have it.
|
||||
|
||||
Change 2604 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Drop 'stdy' slot in element data and use stdy*(1-prop) instead.
|
||||
(Having established that making all data was like that did
|
||||
not make things worse.)
|
||||
|
||||
Change 2603 on 2003/01/01 by nick@dromedary
|
||||
|
||||
Prune the #if 0 code now that new voice scheme and removal
|
||||
of 1st difference seems to work.
|
||||
Also re-instate long mis-understood 'avc' parameter.
|
||||
|
||||
Change 2602 on 2003/01/01 by nick@dromedary
|
||||
|
||||
Remove some entries for words written the same but
|
||||
with different pronounciation when latter cause poblems
|
||||
e.g. we want gin to be [dZIn] not [gIn] (Latter seems wrong)
|
||||
and put to be [pUt] not golfer's [pVt].
|
||||
|
||||
Change 2601 on 2002/12/31 by nick@dromedary
|
||||
|
||||
More oddities - none of stops "stop" - weird - added
|
||||
no-source and external duration to KY GY and seems to help
|
||||
(Do same for [bptd]?)
|
||||
|
||||
Change 2600 on 2002/12/31 by nick@dromedary
|
||||
|
||||
Velars [kg] had no stimulus on in/out - no wonder they were weak!
|
||||
|
||||
Change 2598 on 2002/12/30 by nick@dromedary
|
||||
|
||||
"Restore" naive "f0 decline with stress pulses" approach for
|
||||
un-assisted text-to-speech. Festival as a front end is
|
||||
of course much better, but this restores stand-alone "prosody"
|
||||
element.
|
||||
|
||||
Change 2597 on 2002/12/30 by nick@dromedary
|
||||
|
||||
Gate more messages with -v (verbose) switch
|
||||
|
||||
Change 2596 on 2002/12/30 by nick@dromedary
|
||||
|
||||
Festival binding.
|
||||
|
||||
Change 2595 on 2002/12/29 by nick@dromedary
|
||||
|
||||
Mend ability to say text files. Reset dumb F0 scheme on ',' etc.
|
||||
as well as end of sentence.
|
||||
Add a mode to use .pho file F0 data but ignore its duration data.
|
||||
Correct pronounciation of 'diphones' in beep (dip-hones indeed!).
|
||||
|
||||
Change 2594 on 2002/12/28 by nick@dromedary
|
||||
|
||||
Another try at ms -> num-of-frames interpolation.
|
||||
(Goal is to avoid non-stop elements which vanish as they
|
||||
get 0 time.)
|
||||
|
||||
Change 2593 on 2002/12/28 by nick@dromedary
|
||||
|
||||
General overhaul of Elements.def removing duplicates
|
||||
and correcting accidentally identical elements.
|
||||
|
||||
Change 2591 on 2002/12/28 by nick@dromedary
|
||||
|
||||
"Correct" fix contribution term
|
||||
|
||||
Change 2590 on 2002/12/28 by nick@dromedary
|
||||
|
||||
More info in and tidier plot file.
|
||||
Turn on parameter smoothing by default.
|
||||
|
||||
Change 2589 on 2002/12/28 by nick@dromedary
|
||||
|
||||
Turn of debug :-(
|
||||
|
||||
Change 2588 on 2002/12/28 by nick@dromedary
|
||||
|
||||
Improve mbrola .pho file interpollation:
|
||||
- allow length reduction for non stops
|
||||
- invent new attribute 'stl' (stop locus) to mark in/out
|
||||
elements of stops so only central part is marked as stp
|
||||
(with above this means in/put can change length).
|
||||
- Remove specific [A:] etc. entries in phtoelem.def and handle
|
||||
':' in phtoelm.c
|
||||
|
||||
Change 2587 on 2002/12/28 by nick@dromedary
|
||||
|
||||
At least attempt all vowels on IPA diagram.
|
||||
(Missing ones F1,F2,F2 from IPA CD.)
|
||||
|
||||
Change 2586 on 2002/12/27 by nick@dromedary
|
||||
|
||||
Better error messages for phone translation problems
|
||||
|
||||
Change 2585 on 2002/12/27 by nick@dromedary
|
||||
|
||||
Experimental "rsc" resonator to lift centre of spectrum.
|
||||
Inspired by frequent occurance of such in LPC spectra from tkscope.
|
||||
|
||||
Change 2584 on 2002/12/27 by nick@dromedary
|
||||
|
||||
Tweak [{] based on tkscope analysis of IPA CD
|
||||
|
||||
Change 2581 on 2002/12/27 by nick@dromedary
|
||||
|
||||
Make 1st half of [D] same as 2nd half (looks like an
|
||||
old experiment that got left in.
|
||||
|
||||
Change 2580 on 2002/12/27 by nick@dromedary
|
||||
|
||||
Try waiting longer for /dev/dsp
|
||||
|
||||
Change 2579 on 2002/12/24 by nick@dromedary
|
||||
|
||||
First pass at adding Copyright and LGPL/GPL notices.
|
||||
|
||||
Change 2576 on 2002/12/23 by nick@dromedary
|
||||
|
||||
Switch to piece-wise linear/quadratic voicing waveform.
|
||||
|
||||
Change 2575 on 2002/12/23 by nick@dromedary
|
||||
|
||||
Add "Medi" (Welsh woman's christian name) to dict for personal
|
||||
reasons ;-)
|
||||
|
||||
Change 2574 on 2002/12/23 by nick@dromedary
|
||||
|
||||
#if to switch between taking 1st diff of output + lowpass
|
||||
or not doing either (supposed to be equivalent).
|
||||
The non-diff case should make it easier to inject specific
|
||||
voice waveform.
|
||||
|
||||
Change 2573 on 2002/12/23 by nick@dromedary
|
||||
|
||||
Some light tidying
|
||||
|
||||
Change 2570 on 2002/12/22 by nick@dromedary
|
||||
|
||||
Update comments, experiment with pitch-sync cascade update
|
||||
|
||||
Change 2564 on 2002/12/19 by nick@dromedary
|
||||
|
||||
Tune [N] based on tkscope analysis of "Sounds of IPA" CD
|
||||
- match f4/f5/f6 to John Well's and then adjust [N]'s fn..f3
|
||||
and bandwidths till it looks best.
|
||||
|
||||
Change 2563 on 2002/12/19 by nick@dromedary
|
||||
|
||||
Back port the try severl times tweak
|
||||
|
||||
Change 2550 on 2002/12/15 by nick@dromedary
|
||||
|
||||
SAMPA corrections for sylabic consonants
|
||||
|
||||
Change 2549 on 2002/12/15 by nick@dromedary
|
||||
|
||||
Update/add SAMPA labels for Klatt/MITalk phones
|
||||
|
||||
Change 2548 on 2002/12/12 by nick@dromedary
|
||||
|
||||
Add SAMPA IPA Unicode HTML and script for manipulating it.
|
||||
|
||||
Change 2547 on 2002/12/10 by nick@dromedary
|
||||
|
||||
Place holders for high central vowels [1] and [}]
|
||||
|
||||
Change 2545 on 2002/12/09 by nick@dromedary
|
||||
|
||||
Add x-sampa [4] [K] [?]
|
||||
|
||||
Change 2544 on 2002/12/04 by nick@dromedary
|
||||
|
||||
Restore speed from -S
|
||||
- some clicks seem to be "rapid" changes in f2
|
||||
i.e. go away with more steps as in -S 10 -m 1
|
||||
|
||||
Change 2543 on 2002/12/04 by nick@dromedary
|
||||
|
||||
Adjust global gain to avoid clipping on /Q/
|
||||
|
||||
Change 2542 on 2002/12/03 by nick@dromedary
|
||||
|
||||
Add check for f1-f2-f3-f4 spacing and correct problems
|
||||
it showed
|
||||
- raise fixed f4 above common f3 in several elements
|
||||
- move f1/f2 of /A/ to rp values as perl tkvdgm
|
||||
Update tkvdgm to get data from Elements.def via Elements.pm
|
||||
|
||||
Change 2541 on 2002/11/28 by nick@dromedary
|
||||
|
||||
Clean up tracks of /N/ - still not right (sounds too much like /n/)
|
||||
|
||||
Change 2540 on 2002/11/28 by nick@dromedary
|
||||
|
||||
Amplitude investigations - plot avg power
|
||||
Allow amp/db fudge factor experiments.
|
||||
|
||||
Change 2539 on 2002/11/26 by nick@dromedary
|
||||
|
||||
Compute and plot output amplitude.
|
||||
|
||||
Change 2538 on 2002/11/25 by nick@dromedary
|
||||
|
||||
Tweak duration code with comment till we are clearer
|
||||
about effects to shortened durations on the parameter
|
||||
interpollation.
|
||||
|
||||
Change 2537 on 2002/11/25 by nick@dromedary
|
||||
|
||||
Support say -f whatever.pho
|
||||
where whatever.pho is a mbrola phone/duration/f0 file.
|
||||
Interpolation between durations in ms and frames is
|
||||
still a little rough. Also have some issues when specified
|
||||
duration is less than duration of stops (and maybe some others.)
|
||||
|
||||
Change 2536 on 2002/11/24 by nick@dromedary
|
||||
|
||||
end-of-weekend checkin
|
||||
|
||||
Change 2535 on 2002/11/24 by nick@dromedary
|
||||
|
||||
Some initial mbrola compatibility tweaks
|
||||
|
||||
Change 2528 on 2002/11/19 by nick@dromedary
|
||||
|
||||
Separate voice and parameter data for plotting
|
||||
|
||||
Change 2527 on 2002/11/19 by nick@dromedary
|
||||
|
||||
Parameter track plotting
|
||||
|
||||
Change 2526 on 2002/11/18 by nick@dromedary
|
||||
|
||||
Start reconciling element params and synth params
|
||||
|
||||
Change 2525 on 2002/11/18 by nick@dromedary
|
||||
|
||||
Start of cleanup removing uses of old Klatt code
|
||||
|
||||
Change 2524 on 2002/11/17 by nick@dromedary
|
||||
|
||||
Allow study of old synth
|
||||
|
||||
Change 2522 on 2002/11/17 by nick@dromedary
|
||||
|
||||
Overhaul voice generation - amplitude and basic sound
|
||||
should now be sample rate independant.
|
||||
|
||||
Change 2521 on 2002/11/13 by nick@dromedary
|
||||
|
||||
Update comments, play with sox stats
|
||||
|
||||
Change 2519 on 2002/11/08 by nick@dromedary
|
||||
|
||||
Show phone table
|
||||
|
||||
Change 2503 on 2002/10/05 by nick@bactrian
|
||||
|
||||
Update to modern linux's math.h
|
||||
|
||||
Change 2222 on 2001/05/22 by nick@dromedary
|
||||
|
||||
Clean up f1 too close to f2, f2 to f3 etc.
|
||||
|
||||
Change 2213 on 2001/04/30 by nick@dromedary
|
||||
|
||||
Honour gain terms in impulse response output.
|
||||
|
||||
Change 2212 on 2001/04/24 by nick@pluto
|
||||
|
||||
Boost af gain (i.e. stop * 0.25),
|
||||
move [k] near its voiced analogue [g] and apply
|
||||
same changes.
|
||||
|
||||
Change 2211 on 2001/04/24 by nick@pluto
|
||||
|
||||
[g] edits
|
||||
- av for in/out is low, av for 'nail' is high.
|
||||
- silence/burst
|
||||
|
||||
Change 2210 on 2001/04/24 by nick@pluto
|
||||
|
||||
Support for getting impluse response from frame parameters.
|
||||
|
||||
Change 2209 on 2001/04/24 by nick@pluto
|
||||
|
||||
Apply Klatt f1..f3, b1..b3 to [g]
|
||||
|
||||
Change 2208 on 2001/04/24 by nick@pluto
|
||||
|
||||
Mark fmtelm as executable.
|
||||
|
||||
Change 2207 on 2001/04/23 by nick@dromedary
|
||||
|
||||
Add element trace.
|
||||
|
||||
Change 2206 on 2001/04/23 by nick@dromedary
|
||||
|
||||
Add klatt mapping table. Order parms as perl MITalk book by default.
|
||||
|
||||
Change 2205 on 2001/04/23 by nick@dromedary
|
||||
|
||||
Rename variables to match parameter struct slot names.
|
||||
|
||||
Change 2204 on 2001/04/20 by nick@bactrian
|
||||
|
||||
Modern nas needs -lXt
|
||||
|
||||
Change 2202 on 2001/04/17 by nick@dromedary
|
||||
|
||||
A few systematic adjustments
|
||||
|
||||
Change 2201 on 2001/04/17 by nick@dromedary
|
||||
|
||||
Perl version of Elements.def read/write prior to systematic changes.
|
||||
|
||||
Change 2200 on 2001/04/17 by nick@dromedary
|
||||
|
||||
Finish off the basic osay/say nsynth/opsynth decoupling.
|
||||
|
||||
Change 2199 on 2001/04/17 by nick@dromedary
|
||||
|
||||
Branch Elements
|
||||
|
||||
Change 2198 on 2001/04/17 by nick@pluto
|
||||
|
||||
Makefile tweak to allow nasay to build.
|
||||
Make some of checking Linux only.
|
||||
|
||||
Change 2197 on 2001/04/16 by nick@dromedary
|
||||
|
||||
More flexible sorting.
|
||||
|
||||
Change 2195 on 2001/04/16 by nick@dromedary
|
||||
|
||||
Byteswapping issues in au_file
|
||||
|
||||
Change 2194 on 2001/04/16 by nick@dromedary
|
||||
|
||||
Bounds checking.
|
||||
A hack for 8kHz issue, seems skirt of r5c is aliasing ?
|
||||
|
||||
Change 2193 on 2001/04/16 by nick@dromedary
|
||||
|
||||
Fix gross C->perl->C mis-re-translation in dB routine.
|
||||
|
||||
Change 2191 on 2001/04/15 by nick@dromedary
|
||||
|
||||
Start of new synth.
|
||||
|
||||
Change 2190 on 2001/04/15 by nick@dromedary
|
||||
|
||||
Tweak parameters-for-plot dump
|
||||
|
||||
Change 2189 on 2001/04/14 by nick@dromedary
|
||||
|
||||
Filter efficency and use new features in tkanal.
|
||||
|
||||
Change 2186 on 2001/04/13 by nick@dromedary
|
||||
|
||||
More features for analysing rsynth element tables.
|
||||
|
||||
Change 2113 on 2001/01/27 by nick@dromedary
|
||||
|
||||
Work better on modern linux (SuSE6.4)
|
||||
|
||||
Change 1536 on 1999/11/27 by nick@bactrian_nt
|
||||
|
||||
Win32 fixes
|
||||
|
||||
Change 1496 on 1999/11/09 by nick@bactrian
|
||||
|
||||
Cleanup alignment generation process
|
||||
|
||||
Change 1481 on 1999/09/27 by nick@pluto
|
||||
|
||||
Remove near duplicate file
|
||||
|
||||
Change 1480 on 1999/09/27 by nick@pluto
|
||||
|
||||
Inherit minor tweak on work version of txt710.dat
|
||||
|
||||
Change 1478 on 1999/09/26 by nick@bactrian
|
||||
|
||||
Configure searches /usr/local on linux where gcc suggests /usr
|
||||
as prefix.
|
||||
Bug fix in db API.
|
||||
|
||||
Change 1476 on 1999/09/24 by nick@bactrian
|
||||
|
||||
Builds to use /dev/dspW (16 bit) under OSS
|
||||
|
||||
Change 1475 on 1999/09/22 by nick@bactrian
|
||||
|
||||
Correct gdbm abstraction
|
||||
|
||||
Change 1474 on 1999/09/22 by nick@bactrian
|
||||
|
||||
Update autoconf versions, config.guess etc.
|
||||
|
||||
Change 1455 on 1999/09/02 by nick@bactrian
|
||||
|
||||
On-the-road Monterey/San Jose/Dallas changes
|
||||
|
||||
Change 1316 on 1999/05/14 by nick@ni-s
|
||||
|
||||
Update manifest
|
||||
|
||||
Change 1226 on 1999/03/12 by nick@pluto
|
||||
|
||||
Do not skip source for of Makefile, config.h etc.
|
||||
|
||||
Change 1224 on 1999/03/11 by nick@pluto
|
||||
|
||||
MANIFEST stuff
|
||||
|
||||
Change 1215 on 1999/02/20 by nick@camel
|
||||
|
||||
Fixup for Win32
|
||||
|
||||
Change 1214 on 1999/02/20 by nick@ni-s
|
||||
|
||||
Add Makefile
|
||||
|
||||
Change 1213 on 1999/02/20 by nick@ni-s
|
||||
|
||||
Add "align" stuff
|
||||
|
||||
Change 1205 on 1999/01/23 by nick@camel
|
||||
|
||||
Update for VC++6.0
|
||||
|
||||
Change 1204 on 1999/01/23 by nick@camel
|
||||
|
||||
Add VC++ package
|
||||
|
||||
Change 898 on 1998/06/02 by nick@ni-s
|
||||
|
||||
F/B splitting of text-only trie works
|
||||
|
||||
Change 895 on 1998/06/01 by nick@ni-s
|
||||
|
||||
Re-start from degenerate case (with bugs...)
|
||||
|
||||
Change 893 on 1998/05/31 by nick@ni-s
|
||||
|
||||
Bad splits break re-finding
|
||||
|
||||
Change 892 on 1998/05/30 by nick@ni-s
|
||||
|
||||
Don't match if cannot split both word and phon
|
||||
|
||||
Change 891 on 1998/05/30 by nick@ni-s
|
||||
|
||||
Basic splitting working, problem with silly partition on
|
||||
Dutchmen/Dutchman
|
||||
|
||||
Change 890 on 1998/05/30 by nick@ni-s
|
||||
|
||||
Separate functions for forward/backward insert
|
||||
|
||||
Change 889 on 1998/05/30 by nick@ni-s
|
||||
|
||||
Split functions
|
||||
|
||||
Change 888 on 1998/05/30 by nick@ni-s
|
||||
|
||||
Dual disjoint trees
|
||||
|
||||
Change 887 on 1998/05/29 by nick@pluto
|
||||
|
||||
Fridays changes - try stack of nodes
|
||||
|
||||
Change 886 on 1998/05/28 by nick@pluto
|
||||
|
||||
End of Thur - backward match stuff
|
||||
|
||||
Change 885 on 1998/05/28 by nick@pluto
|
||||
|
||||
After re-structure to allow guess/build
|
||||
|
||||
Change 884 on 1998/05/28 by nick@pluto
|
||||
|
||||
End of Wednesday
|
||||
|
||||
Change 883 on 1998/05/26 by nick@ni-s
|
||||
|
||||
dtree seems to build
|
||||
|
||||
Change 882 on 1998/05/26 by nick@ni-s
|
||||
|
||||
Missed file
|
||||
|
||||
Change 881 on 1998/05/26 by nick@pluto
|
||||
|
||||
Add autoconf input file, remove Makefile as it is built
|
||||
|
||||
Change 880 on 1998/05/26 by nick@pluto
|
||||
|
||||
Support db as well as gdbm, update to latest autoconf
|
||||
|
||||
Change 879 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Pre s-rule messing
|
||||
|
||||
Change 878 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Added consonat rules as far as 's' from LPD side-bars
|
||||
|
||||
Change 877 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Re-structure for stand-alone guess for debug
|
||||
|
||||
Change 876 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Snapshot more rule changes
|
||||
|
||||
Change 875 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Switched text.c rules to lower case
|
||||
|
||||
Change 874 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Pre-downcase
|
||||
|
||||
Change 873 on 1998/05/24 by nick@ni-s
|
||||
|
||||
More rule tweaks
|
||||
|
||||
Change 872 on 1998/05/24 by nick@ni-s
|
||||
|
||||
1st round of rule-fixups by cross check with CUVOALD
|
||||
|
||||
Change 870 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Open as ktext
|
||||
|
||||
Change 869 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Add integer version of synth
|
||||
|
||||
Change 868 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Wilbur's pitch floor tweak.
|
||||
|
||||
Change 867 on 1998/05/23 by nick@camel
|
||||
|
||||
Builds under mingw32
|
||||
|
||||
Change 866 on 1998/05/23 by nick@camel
|
||||
|
||||
Works on Win32 (watch the volume...)
|
||||
|
||||
Change 865 on 1998/05/23 by nick@camel
|
||||
|
||||
Links under borland
|
||||
|
||||
Change 864 on 1998/05/23 by nick@camel
|
||||
|
||||
Gross fixup
|
||||
|
||||
Change 863 on 1998/05/23 by nick@camel
|
||||
|
||||
Win32-side fixup
|
||||
|
||||
Change 861 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Raw timidity win32 stuff
|
||||
|
||||
Change 860 on 1998/05/23 by nick@ni-s
|
||||
|
||||
gcc 2.8 fussyness
|
||||
|
||||
Change 858 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Import /home/nick/speak/rsynth
|
||||
|
||||
Change 857 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Import /home/nick/speak/rsynth-2.0
|
||||
|
||||
Change 856 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Import /tmp/rsynth
|
||||
|
||||
Change 855 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Version 1.99
|
||||
|
||||
Change 854 on 1998/05/23 by nick@ni-s
|
||||
|
||||
"ntalk" May 7 1994
|
||||
|
||||
Change 853 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Version c. 'Feb 24 1994' rsynth.tar.Z
|
||||
|
||||
Change 852 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Version "rsynth_cuvolad.tar.gz"
|
||||
|
||||
Change 851 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Version released as 'nsynth.tar.gz'
|
||||
|
||||
Change 850 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Original 'synth.tar.gz'
|
||||
|
@ -1,169 +0,0 @@
|
||||
$Id: INSTALL,v 1.1 2006-06-11 07:13:20 urchlay Exp $
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, a file
|
||||
`config.cache' that saves the results of its tests to speed up
|
||||
reconfiguring, and a file `config.log' containing compiler output
|
||||
(useful mainly for debugging `configure').
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If at some point `config.cache'
|
||||
contains results you don't want to keep, you may remove or edit it.
|
||||
|
||||
The file `configure.in' is used to create `configure' by a program
|
||||
called `autoconf'. You only need `configure.in' if you want to change
|
||||
it or regenerate `configure' using a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source directory by typing `make clean'. To also remove the files
|
||||
that `configure' created (so you can compile the package for a
|
||||
different kind of computer), type `make distclean'.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. You can give `configure'
|
||||
initial values for variables by setting them in the environment. Using
|
||||
a Bourne-compatible shell, you can do that on the command line like
|
||||
this:
|
||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||
|
||||
Or on systems that have the `env' program, you can do it like this:
|
||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||
|
||||
Using a Different Build Directory
|
||||
=================================
|
||||
|
||||
You can compile the package in a different directory from the one
|
||||
containing the source code. Doing so allows you to compile it on more
|
||||
than one kind of computer at the same time. To do this, you must use a
|
||||
version of `make' that supports the `VPATH' variable, such as GNU
|
||||
`make'. `cd' to the directory where you want the object files and
|
||||
executables to go and run the `configure' script. `configure'
|
||||
automatically checks for the source code in the directory that
|
||||
`configure' is in and in `..'.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' can not figure out
|
||||
automatically, but needs to determine by the type of host the package
|
||||
will run on. Usually `configure' can figure that out, but if it prints
|
||||
a message saying it can not guess the host type, give it the
|
||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name with three fields:
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the host type.
|
||||
|
||||
If you are building compiler tools for cross-compiling, you can also
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for and the `--build=TYPE' option to select the type of
|
||||
system on which you are compiling the package.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Save the results of the tests in FILE instead of `config.cache'.
|
||||
Set FILE to `/dev/null' to disable caching, for debugging
|
||||
`configure'.
|
||||
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made.
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options.
|
||||
|
@ -1,114 +0,0 @@
|
||||
COPYING GPL
|
||||
COPYING.LIB LGPL
|
||||
Change.log What has happened
|
||||
Elements.def Definition of elements
|
||||
INSTALL How to install
|
||||
MANIFEST This file
|
||||
MANIFEST.SKIP Things that don't get included here
|
||||
Makefile.in Pre configure Makefile
|
||||
OldChanges Changes from RCS days
|
||||
PORTING Outline of audio driver needs
|
||||
kmap Phone mappings
|
||||
README Please do ;-)
|
||||
Revision.c Clunky way of setting revision
|
||||
Rsynth/Audio.pm Perl API to this
|
||||
Rsynth/Audio.xs Perl C bindings
|
||||
Rsynth/Elements.pm Perl access to Elements
|
||||
Rsynth/Makefile.PL Perl API build
|
||||
Rsynth/t/elem.t Test low level Perl API
|
||||
Rsynth/t/phones.t Test data
|
||||
Rsynth/phtoelm.def Phone to element data
|
||||
Rsynth/typemap Perl/C type conversion
|
||||
Sampa.pm Perl code to read sampa.htm
|
||||
aufile.c Sun .au file writer
|
||||
aufile.h Sun .au file writer
|
||||
charset.c Locale and charcter set choices
|
||||
charset.h
|
||||
config.guess configure support
|
||||
config.h.in configure support
|
||||
config.sub configure support
|
||||
config/NeXTplay.c
|
||||
config/config.win32
|
||||
config/dummyplay.c
|
||||
config/freebsdplay.c
|
||||
config/hpuxplay.c
|
||||
config/alsaplay.c New ALSA Audio driver
|
||||
config/ossplay.c OSS Audio driver
|
||||
config/make_dist
|
||||
config/mmsystem.h
|
||||
config/naplay.c NAS Audio Driver
|
||||
config/pipeplay.c
|
||||
config/sgiplay.c
|
||||
config/sunplay.c
|
||||
config/sunplay_mm.c
|
||||
config/win32play.c
|
||||
configure Generated build script
|
||||
configure.in configure support
|
||||
darray.c Dynamic array C code
|
||||
darray.h
|
||||
dat2au Perl script for something ...
|
||||
dbif.h DB/GDBM abstraction for dictionary
|
||||
deutsch.c Some support for german
|
||||
deutsch.h Some support for german
|
||||
dict.c Dictionary code
|
||||
dict.h
|
||||
dlookup.c Dictionary lookup command line application
|
||||
efix
|
||||
elements.c Element code
|
||||
elmdgm Vowel parameter display/edit tool
|
||||
english.c Letter to Sound rules
|
||||
english.h
|
||||
euler.pho MBrola style pho file ( say -f euler.pho )
|
||||
euler.txt Plain text of above ( say < euler.txt )
|
||||
festival/.festivalrc Copy to ~/.festivalrc to enable rsynth as a voice for festival
|
||||
festival/lib/rsynth.scm Festival Hackery
|
||||
festival/lib/voices/english/rsynth_br_f/festvox/rsynth_br_f.scm
|
||||
festival/lib/voices/english/rsynth_br_f/mrpa-sampa
|
||||
festival/lib/voices/english/rsynth_br_m/festvox/rsynth_br_m.scm
|
||||
festival/lib/voices/english/rsynth_br_m/mrpa-sampa
|
||||
fmtelem Re-format Elements.def
|
||||
fmtfeat Re-format phfeat.h
|
||||
fsay Use via festival
|
||||
getarg.c Command line parser
|
||||
getargs.h
|
||||
getrev Build assist script
|
||||
guess.c Command line tool to test letter to sound rules
|
||||
holmes.c Element parameter interpolation
|
||||
hplay.h Audio driver API
|
||||
hpuxcc.doc
|
||||
iam.txt Test data
|
||||
install.sh configure support
|
||||
l2u.c uLaw conversion tables
|
||||
l2u.h
|
||||
lang.h
|
||||
ldbdict perl dump of DB dictionary
|
||||
ldict perl dump of GDBM dictionary
|
||||
mbrola.txt Test data
|
||||
mkdictdb.c Build DB/GDBM dictionary from CMU style file
|
||||
naplay.c NAS audio driver
|
||||
opsynth.c Core synth
|
||||
phfeat.h Phoneme features
|
||||
phones.c Phoneme table
|
||||
phones.def Guts of phoneme table
|
||||
phones.h
|
||||
phrases.txt Test data
|
||||
phtoelm.c Phoneme to element layer
|
||||
phtoelm.h
|
||||
plotparm.h
|
||||
prune_elm Perl script that for Elements.def
|
||||
rsynth.h Main header
|
||||
sampa.htm SAMPA IPA tables as UTF-8 HTML
|
||||
sample Test data
|
||||
say.c Algrorithmic conversion of numbers etc.
|
||||
say.h
|
||||
saydate Demo
|
||||
saymain.c main() of ./say application
|
||||
showphone perl/Tk app to display phones.def
|
||||
text test data
|
||||
text.c Letter to sound driver
|
||||
text.h
|
||||
tkvdgm Old perl/Tk app to show vowel diagram from formants
|
||||
tracks gnuplot dumpped interpollated parameters
|
||||
trie.c Trie lookup code
|
||||
trie.h
|
||||
useconfig.h configure support
|
@ -1,21 +0,0 @@
|
||||
[%~]$
|
||||
\.[oa]$
|
||||
\.d$
|
||||
\.(bak|bck|save|old|db|plot|dat|bs|au)$
|
||||
\b(RCS|CVS|comments|Solaris|makefiles|SunOS.*)/
|
||||
\b[ab]Dict$
|
||||
\b(align|710)\b
|
||||
text710\.
|
||||
\bcheck\b
|
||||
(sampa|dist|misc|voice|dict|anal|attic|MITalk|mappings|Rsynth/blib)/
|
||||
\bconfig\.h$
|
||||
\brulebuild
|
||||
\brulecheck
|
||||
(GNU)?[Mm]akefile$
|
||||
hplay\.c
|
||||
Rsynth/Audio\.c
|
||||
pm_to_blib
|
||||
^(say|nasay|rsynth|mkdictdb|dlookup|guess|mid|small|tiny)$
|
||||
config\.(cache|status|log)$
|
||||
autom4te.cache/.*
|
||||
^phtoelm.def
|
@ -1,166 +0,0 @@
|
||||
# $Id: Makefile,v 1.1 2006-06-11 07:13:20 urchlay Exp $
|
||||
|
||||
|
||||
SRCDIR = .
|
||||
CC = gcc
|
||||
RANLIB = ranlib
|
||||
PREFIX = /usr/local
|
||||
BIN_DIR = $(PREFIX)/bin
|
||||
LIB_DIR = $(PREFIX)/lib/dict
|
||||
LDLIBS = -lm -lgdbm -ldb -L/usr/local/lib -lasound
|
||||
XLIBS = -L/usr/X11R6/lib64 -lXt -L/usr/X11R6/lib64 -lX11 -lnsl
|
||||
CFLAGS = -g -O2
|
||||
CPPFLAGS = -I. -I. -I/usr/local/include -I/usr/X11R6/include
|
||||
DEFS = -DDICT_DIR=\"$(LIB_DIR)\" -DDEFAULT_DICT=\"$(DEFAULT_DICT)\"
|
||||
PROGS = say mkdictdb dlookup mkdictdb dlookup
|
||||
ADICT =
|
||||
BDICT =
|
||||
BUILD = perlstuff
|
||||
DICTS =
|
||||
PERL = /usr/bin/perl
|
||||
FESTIVAL =
|
||||
DEFAULT_DICT = b
|
||||
INSTALL = /usr/bin/ginstall -c
|
||||
INSTALL_PROG = ${INSTALL}
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
EXTRA_INST = install_perl
|
||||
MESSAGE = Hello there
|
||||
LIBRARY = Rsynth/librsynth.a
|
||||
|
||||
.c.o :
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -IRsynth $(DEFS) -c -o $@ $<
|
||||
|
||||
all :: $(PROGS) $(BUILD)
|
||||
|
||||
check :: all perl_check
|
||||
(./say $(MESSAGE) || ./nasay $(MESSAGE))
|
||||
|
||||
|
||||
SYNOBJ = opsynth.o elements.o holmes.o trie.o phtoelm.o darray.o
|
||||
PHONOBJ = say.o phones.o text.o english.o deutsch.o charset.o
|
||||
|
||||
$(LIBRARY) : $(SYNOBJ) $(PHONOBJ)
|
||||
$(AR) rc $@ $(SYNOBJ) $(PHONOBJ)
|
||||
$(RANLIB) $@
|
||||
|
||||
SAY_OBJS = $(PHONOBJ) l2u.o aufile.o getarg.o Revision.o dict.o saymain.o
|
||||
|
||||
say : $(LIBRARY) $(SAY_OBJS) hplay.o
|
||||
$(CC) -o $@ $(LDFLAGS) $(SAY_OBJS) $(SYNOBJ) hplay.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
nasay : $(LIBRARY) $(SAY_OBJS) naplay.o
|
||||
$(CC) -o $@ $(LDFLAGS) $(SAY_OBJS) $(SYNOBJ) naplay.o $(LIBRARY) $(XLIBS) $(LDLIBS)
|
||||
|
||||
mkdictdb : mkdictdb.o $(LIBRARY)
|
||||
$(CC) -o $@ $(LDFLAGS) mkdictdb.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
dlookup : dlookup.o getarg.o $(LIBRARY)
|
||||
$(CC) -o $@ $(LDFLAGS) dlookup.o getarg.o dict.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
clean ::
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) clean ; fi
|
||||
rm -f $(LIBRARY) $(PROGS) $(DICTS) *.o tmp.par core *~ *% ,* .e[cks]1
|
||||
|
||||
distclean :: clean
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) distclean ; fi
|
||||
rm -f Makefile config.status config.h config.log config.cache hplay.c
|
||||
|
||||
|
||||
hplay.o : hplay.c getargs.h hplay.h
|
||||
|
||||
aDict.db : $(ADICT) mkdictdb
|
||||
LANG=en_US mkdictdb $(ADICT) aDict.db
|
||||
touch $@
|
||||
|
||||
bDict.db : $(BDICT) mkdictdb
|
||||
LANG=en_GB mkdictdb $(BDICT) bDict.db
|
||||
touch $@
|
||||
|
||||
install : $(PROGS) $(DICTS) $(EXTRA_INST)
|
||||
mkdir -p $(PREFIX) $(BIN_DIR) $(LIB_DIR)
|
||||
for f in $(PROGS); do \
|
||||
$(INSTALL_PROG) $$f $(BIN_DIR); \
|
||||
done
|
||||
$(INSTALL) -d $(LIB_DIR)
|
||||
for f in $(DICTS); do \
|
||||
$(INSTALL_DATA) $$f $(LIB_DIR); \
|
||||
done
|
||||
|
||||
perl_check :
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) test ; fi
|
||||
|
||||
perlstuff : $(LIBRARY) Rsynth/Makefile.PL
|
||||
cd Rsynth && $(PERL) Makefile.PL && $(MAKE) PERL=$(PERL)
|
||||
|
||||
festival :
|
||||
|
||||
install_perl :
|
||||
cd Rsynth && $(MAKE) PERL=$(PERL) install
|
||||
|
||||
install_festival :
|
||||
|
||||
phtoelm.def : Rsynth/phtoelm.def
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
|
||||
# This bit of Makefile only works if GNU make is available
|
||||
# The classic make version would have `$(SRCDIR)/getrev $(SRCDIR)`
|
||||
# which does not work as it gets evaluated by 'sh' once we have cd'ed
|
||||
# elsewhere. GNU make scheme uses := and $(shell...) to evaluate
|
||||
# REVISION once at Makefile parse time
|
||||
# It is really only needed by developer
|
||||
|
||||
REVISION := $(shell $(SRCDIR)/getrev $(SRCDIR))
|
||||
|
||||
distribution:
|
||||
rm -rf /tmp/rsynth-$(REVISION)
|
||||
mkdir /tmp/rsynth-$(REVISION)
|
||||
(cd $(SRCDIR); tar cf - `cat MANIFEST` ) | (cd /tmp/rsynth-$(REVISION); tar xf - )
|
||||
(cd /tmp; tar cvf - rsynth-$(REVISION) ) | gzip -c > $(SRCDIR)/../rsynth-$(REVISION).tar.gz
|
||||
|
||||
disttest :
|
||||
rm -rf /tmp/rsynth-$(REVISION)
|
||||
mkdir /tmp/rsynth-$(REVISION)
|
||||
(cd $(SRCDIR); tar cf - `cat MANIFEST` ) | (cd /tmp/rsynth-$(REVISION); tar xf - )
|
||||
(cd /tmp/rsynth-$(REVISION); CC=$(CC) configure ; make CC=$(CC) -k check)
|
||||
|
||||
|
||||
#MM Fri Jan 2 11:28:16 2004
|
||||
aufile.o: aufile.c config.h useconfig.h getargs.h l2u.h hplay.h aufile.h
|
||||
charset.o: charset.c charset.h
|
||||
darray.o: darray.c config.h useconfig.h darray.h
|
||||
deutsch.o: deutsch.c config.h darray.h lang.h say.h deutsch.h
|
||||
dict.o: dict.c config.h charset.h phones.h phones.def useconfig.h dbif.h \
|
||||
lang.h darray.h dict.h
|
||||
dlookup.o: dlookup.c config.h useconfig.h dict.h lang.h darray.h phones.h \
|
||||
phones.def getargs.h english.h
|
||||
elements.o: elements.c config.h rsynth.h darray.h trie.h phfeat.h \
|
||||
Elements.def
|
||||
english.o: english.c config.h darray.h lang.h say.h charset.h english.h \
|
||||
phones.h phones.def
|
||||
getarg.o: getarg.c config.h useconfig.h getargs.h
|
||||
guess.o: guess.c darray.h charset.h text.h phones.h phones.def lang.h \
|
||||
english.h say.h
|
||||
holmes.o: holmes.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
getargs.h plotparm.h hplay.h
|
||||
hplay.o: hplay.c config.h useconfig.h l2u.h getargs.h hplay.h
|
||||
l2u.o: l2u.c
|
||||
mkdictdb.o: mkdictdb.c config.h useconfig.h trie.h darray.h phones.h \
|
||||
phones.def charset.h dbif.h
|
||||
opsynth.o: opsynth.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
plotparm.h
|
||||
phones.o: phones.c config.h phones.h phones.def
|
||||
phtoelm.o: phtoelm.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
hplay.h phfeat.h phtoelm.def
|
||||
Revision.o: Revision.c
|
||||
rulebuild.o: rulebuild.c config.h useconfig.h darray.h lang.h english.h \
|
||||
phones.h phones.def charset.h text.h say.h
|
||||
say.o: say.c config.h useconfig.h darray.h rsynth.h trie.h hplay.h dict.h \
|
||||
lang.h text.h getargs.h phones.h phones.def aufile.h charset.h \
|
||||
english.h deutsch.h say.h
|
||||
saymain.o: saymain.c config.h useconfig.h darray.h rsynth.h trie.h \
|
||||
hplay.h dict.h lang.h text.h getargs.h phones.h phones.def aufile.h \
|
||||
charset.h english.h deutsch.h say.h
|
||||
text.o: text.c config.h useconfig.h darray.h phtoelm.h lang.h text.h \
|
||||
say.h
|
||||
trie.o: trie.c config.h useconfig.h trie.h
|
@ -1,145 +0,0 @@
|
||||
# $Id: Makefile.in,v 1.1 2006-06-11 07:13:22 urchlay Exp $
|
||||
|
||||
VPATH = @srcdir@
|
||||
SRCDIR = @srcdir@
|
||||
CC = @CC@
|
||||
RANLIB = @RANLIB@
|
||||
PREFIX = @prefix@
|
||||
BIN_DIR = $(PREFIX)/bin
|
||||
LIB_DIR = $(PREFIX)/lib/dict
|
||||
LDLIBS = @LIBS@
|
||||
XLIBS = @XLIBS@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
DEFS = -DDICT_DIR=\"$(LIB_DIR)\" -DDEFAULT_DICT=\"$(DEFAULT_DICT)\"
|
||||
PROGS = @PROGS@
|
||||
ADICT = @ADICT@
|
||||
BDICT = @BDICT@
|
||||
BUILD = @BUILD@
|
||||
DICTS = @DICTS@
|
||||
PERL = @PERL@
|
||||
FESTIVAL = @FESTIVAL@
|
||||
DEFAULT_DICT = @DEFAULT_DICT@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROG = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
EXTRA_INST = @EXTRA_INST@
|
||||
MESSAGE = Hello there
|
||||
LIBRARY = Rsynth/librsynth.a
|
||||
|
||||
.c.o :
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -IRsynth $(DEFS) -c -o $@ $<
|
||||
|
||||
all :: $(PROGS) $(BUILD)
|
||||
|
||||
check :: all perl_check
|
||||
(./say $(MESSAGE) || ./nasay $(MESSAGE))
|
||||
|
||||
|
||||
SYNOBJ = opsynth.o elements.o holmes.o trie.o phtoelm.o darray.o
|
||||
PHONOBJ = say.o phones.o text.o english.o deutsch.o charset.o
|
||||
|
||||
$(LIBRARY) : $(SYNOBJ) $(PHONOBJ)
|
||||
$(AR) rc $@ $(SYNOBJ) $(PHONOBJ)
|
||||
$(RANLIB) $@
|
||||
|
||||
SAY_OBJS = $(PHONOBJ) l2u.o aufile.o getarg.o Revision.o dict.o saymain.o
|
||||
|
||||
say : $(LIBRARY) $(SAY_OBJS) hplay.o
|
||||
$(CC) -o $@ $(LDFLAGS) $(SAY_OBJS) $(SYNOBJ) hplay.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
nasay : $(LIBRARY) $(SAY_OBJS) naplay.o
|
||||
$(CC) -o $@ $(LDFLAGS) $(SAY_OBJS) $(SYNOBJ) naplay.o $(LIBRARY) $(XLIBS) $(LDLIBS)
|
||||
|
||||
mkdictdb : mkdictdb.o $(LIBRARY)
|
||||
$(CC) -o $@ $(LDFLAGS) mkdictdb.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
dlookup : dlookup.o getarg.o $(LIBRARY)
|
||||
$(CC) -o $@ $(LDFLAGS) dlookup.o getarg.o dict.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
clean ::
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) clean ; fi
|
||||
rm -f $(LIBRARY) $(PROGS) $(DICTS) *.o tmp.par core *~ *% ,* .e[cks]1
|
||||
|
||||
distclean :: clean
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) distclean ; fi
|
||||
rm -f Makefile config.status config.h config.log config.cache hplay.c
|
||||
|
||||
|
||||
hplay.o : hplay.c getargs.h hplay.h
|
||||
|
||||
aDict.db : $(ADICT) mkdictdb
|
||||
LANG=en_US mkdictdb $(ADICT) aDict.db
|
||||
touch $@
|
||||
|
||||
bDict.db : $(BDICT) mkdictdb
|
||||
LANG=en_GB mkdictdb $(BDICT) bDict.db
|
||||
touch $@
|
||||
|
||||
install : $(PROGS) $(DICTS) $(EXTRA_INST)
|
||||
mkdir -p $(PREFIX) $(BIN_DIR) $(LIB_DIR)
|
||||
for f in $(PROGS); do \
|
||||
$(INSTALL_PROG) $$f $(BIN_DIR); \
|
||||
done
|
||||
$(INSTALL) -d $(LIB_DIR)
|
||||
for f in $(DICTS); do \
|
||||
$(INSTALL_DATA) $$f $(LIB_DIR); \
|
||||
done
|
||||
|
||||
perl_check :
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) test ; fi
|
||||
|
||||
perlstuff : $(LIBRARY) Rsynth/Makefile.PL
|
||||
cd Rsynth && $(PERL) Makefile.PL && $(MAKE) PERL=$(PERL)
|
||||
|
||||
festival :
|
||||
|
||||
install_perl :
|
||||
cd Rsynth && $(MAKE) PERL=$(PERL) install
|
||||
|
||||
install_festival :
|
||||
|
||||
phtoelm.def : Rsynth/phtoelm.def
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
@make_dist@
|
||||
|
||||
#MM Fri Jan 2 11:28:16 2004
|
||||
aufile.o: aufile.c config.h useconfig.h getargs.h l2u.h hplay.h aufile.h
|
||||
charset.o: charset.c charset.h
|
||||
darray.o: darray.c config.h useconfig.h darray.h
|
||||
deutsch.o: deutsch.c config.h darray.h lang.h say.h deutsch.h
|
||||
dict.o: dict.c config.h charset.h phones.h phones.def useconfig.h dbif.h \
|
||||
lang.h darray.h dict.h
|
||||
dlookup.o: dlookup.c config.h useconfig.h dict.h lang.h darray.h phones.h \
|
||||
phones.def getargs.h english.h
|
||||
elements.o: elements.c config.h rsynth.h darray.h trie.h phfeat.h \
|
||||
Elements.def
|
||||
english.o: english.c config.h darray.h lang.h say.h charset.h english.h \
|
||||
phones.h phones.def
|
||||
getarg.o: getarg.c config.h useconfig.h getargs.h
|
||||
guess.o: guess.c darray.h charset.h text.h phones.h phones.def lang.h \
|
||||
english.h say.h
|
||||
holmes.o: holmes.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
getargs.h plotparm.h hplay.h
|
||||
hplay.o: hplay.c config.h useconfig.h l2u.h getargs.h hplay.h
|
||||
l2u.o: l2u.c
|
||||
mkdictdb.o: mkdictdb.c config.h useconfig.h trie.h darray.h phones.h \
|
||||
phones.def charset.h dbif.h
|
||||
opsynth.o: opsynth.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
plotparm.h
|
||||
phones.o: phones.c config.h phones.h phones.def
|
||||
phtoelm.o: phtoelm.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
hplay.h phfeat.h phtoelm.def
|
||||
Revision.o: Revision.c
|
||||
rulebuild.o: rulebuild.c config.h useconfig.h darray.h lang.h english.h \
|
||||
phones.h phones.def charset.h text.h say.h
|
||||
say.o: say.c config.h useconfig.h darray.h rsynth.h trie.h hplay.h dict.h \
|
||||
lang.h text.h getargs.h phones.h phones.def aufile.h charset.h \
|
||||
english.h deutsch.h say.h
|
||||
saymain.o: saymain.c config.h useconfig.h darray.h rsynth.h trie.h \
|
||||
hplay.h dict.h lang.h text.h getargs.h phones.h phones.def aufile.h \
|
||||
charset.h english.h deutsch.h say.h
|
||||
text.o: text.c config.h useconfig.h darray.h phtoelm.h lang.h text.h \
|
||||
say.h
|
||||
trie.o: trie.c config.h useconfig.h trie.h
|
@ -1,42 +0,0 @@
|
||||
$Log: not supported by cvs2svn $
|
||||
# Revision 1.13 1994/11/08 13:30:50 a904209
|
||||
# 2.0 release
|
||||
#
|
||||
# Revision 1.12 1994/11/04 13:32:31 a904209
|
||||
# 1.99.1 - Change configure stuff
|
||||
#
|
||||
# Revision 1.11 1994/11/02 10:55:31 a904209
|
||||
# Add autoconf. Tested on SunOS/Solaris
|
||||
#
|
||||
# Revision 1.10 1994/10/04 17:12:50 a904209
|
||||
# 3rd pre-release
|
||||
#
|
||||
# Revision 1.9 1994/10/04 09:08:27 a904209
|
||||
# Next Patch merge
|
||||
#
|
||||
# Revision 1.8 1994/10/03 08:41:47 a904209
|
||||
# 2nd pre-release
|
||||
#
|
||||
# Revision 1.7 1994/09/19 15:48:29 a904209
|
||||
# Split hplay.c, gdbm dictionary, start of f0 contour, netaudio and HP ports
|
||||
#
|
||||
# Revision 1.6 1994/04/15 16:47:37 a904209
|
||||
# Edits for Solaris2.3 (aka SunOs 5.3)
|
||||
#
|
||||
# Revision 1.5 1994/02/24 15:03:05 a904209
|
||||
# Added contributed linux, NeXT and SGI ports.
|
||||
#
|
||||
# Revision 1.4 93/11/18 16:28:56 a904209
|
||||
# Migrated nsyth.c towards Jon's scheme - merge still incomplete
|
||||
#
|
||||
# Revision 1.3 93/11/16 14:32:34 a904209
|
||||
# Added RCS Ids, partial merge of Jon's new klatt/parwave
|
||||
#
|
||||
# Revision 1.2 93/11/16 14:30:48 a904209
|
||||
# Applied suggested linux patches and added partial SGI support
|
||||
#
|
||||
# Revision 1.1 93/11/16 14:26:09 a904209
|
||||
# Add RCS version control to original posting
|
||||
#
|
||||
# First posting of rsynth-0.9.tar.Z
|
||||
|
@ -1,233 +0,0 @@
|
||||
|
||||
This is a text to speech system produced by integrating various pieces
|
||||
of code and tables of data, which are all (I believe) suitable
|
||||
for use in OpenSource projects.
|
||||
|
||||
The files in this distribution are either under GPL or LGPL.
|
||||
|
||||
For best quality it is highly desirable to use one of the dictionaries
|
||||
suggested below.
|
||||
|
||||
The uses GNU autoconf to build a configure script.
|
||||
The generic install instructions are in INSTALL, but basically
|
||||
it works like this :
|
||||
|
||||
configure
|
||||
make
|
||||
make check
|
||||
say --help
|
||||
say Something of your choice
|
||||
make -n install # see what it is going to do
|
||||
make install # copy program(s) to /usr/local/bin
|
||||
|
||||
configure --help and INSTALL file explain configure options
|
||||
which may help.
|
||||
|
||||
To allow the package to be built when installer cannot install the
|
||||
GNU gdbm package in the "normal" place you can specify a pathname
|
||||
to the gdbm source directory as follows :
|
||||
|
||||
configure --with-gdbm=<path-to-gdbm>
|
||||
|
||||
e.g.
|
||||
|
||||
configure --with-gdbm=$HOME/gdbm
|
||||
|
||||
Currently there are the following drivers that are actively
|
||||
maintained by me:
|
||||
|
||||
1. Linux - ALSA or OSS
|
||||
OSS driver will probably work on netbsd/freebsd etc.
|
||||
configure should sort this out.
|
||||
|
||||
2. Windows - I will be supporting it, but it may not work
|
||||
in this version.
|
||||
|
||||
3. Any machine for which a nas/netaudio port exists.
|
||||
And for which configure can find the include files and libraries.
|
||||
(Nas "net audio server" does for audio what X11 does for graphics.)
|
||||
|
||||
There are also drivers from the really old rsynth code
|
||||
which are still there:
|
||||
|
||||
* Sun SPARCStations - written & tested by me (when at TI)
|
||||
on SunOS4.1.3 and Solaris2.3
|
||||
* NeXT
|
||||
* SGI - this built on "mips-sgi-irix4.0.5H"
|
||||
* HPUX
|
||||
|
||||
|
||||
Dictionaries:
|
||||
|
||||
Dictionaries convert words in "text" to phonemes in "arpabet"
|
||||
symbols. The arpabet symbols are then "expanded" into an ASCII
|
||||
representation of the IPA.
|
||||
The IPA representation is SAMPA, as defined by J C Wells at UCL see:
|
||||
|
||||
http://www.phon.ucl.ac.uk/home/sampa/home.htm
|
||||
|
||||
Dictionary databases can be built from either of two ftp'able
|
||||
sources:
|
||||
|
||||
1. The Carnegie Mellon Pronouncing Dictionary [cmudict.0.1] is Copyright
|
||||
1993 by Carnegie Mellon University. Use of this dictionary, for any
|
||||
research or commercial purpose, is completely unrestricted. If you
|
||||
make use of or redistribute this material, we would appreciate
|
||||
acknowlegement of its origin.
|
||||
|
||||
ftp://ftp.cs.cmu.edu/project/fgdata/dict
|
||||
Latest seems to be cmudict.0.6.gz
|
||||
|
||||
2. "beep" from
|
||||
ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/dictionaries
|
||||
Latest seems to be beep-1.0.tar.gz
|
||||
|
||||
This is a direct desendant of CUVOLAD (british pronounciation)
|
||||
(as used by previous releases of rsynth), and so
|
||||
has a more restrictive copyright than CMU dictionary.
|
||||
|
||||
dict.c looks for bDict.db by default. b is for british e.g. beep
|
||||
I use aDict.db for CMU (american) dictionary.
|
||||
You can then :
|
||||
|
||||
say -d a schedule # sked...
|
||||
say -d b schedule # shed...
|
||||
|
||||
It is simplest to obtain dictionaries prior to configuring the
|
||||
package and tell it where the source are at configure time:
|
||||
|
||||
|
||||
configure --with-aDict=../dict/cmudict.0.6 --with-bDict=../dict/beep-1.0
|
||||
|
||||
If you have already built/installed the package you can
|
||||
gdbm from it as follows:
|
||||
|
||||
mkdictdb main-dictionary-file bDict.db
|
||||
mv bDict.db /usr/local/lib
|
||||
|
||||
Expect a few messages from mkdictdb about words it does not like
|
||||
in either dictionary.
|
||||
|
||||
It should not be too hard to port it to other hardware. For a discussion of
|
||||
these issues see PORTING.
|
||||
|
||||
Use say --help to get a list of command line options.
|
||||
|
||||
There is an experimental hook to allow you to "say" .pho files intended
|
||||
for MBrola diphone synth. This is used to provide a hacky back-end
|
||||
for Festival.
|
||||
|
||||
Projects:
|
||||
Plan is to pre-analyze the dictionaries and produce better letter
|
||||
to sound rules and smaller exception dictionaries.
|
||||
|
||||
Add more of IPA repertiore so that synth can attempt more languages.
|
||||
|
||||
Improve quality.
|
||||
|
||||
The components (top down ) :
|
||||
|
||||
saymain.c
|
||||
C main() function.
|
||||
Initializes lower layers and then converts words from
|
||||
command line or "stdin" to phonemes.
|
||||
|
||||
say.c / say.h
|
||||
Some "normalization" of the text is performed, in particular
|
||||
numbers can be represented as sequences of digits.
|
||||
|
||||
|
||||
dict.c / dict.h
|
||||
|
||||
As of this release uses a GNU "gdbm" database which has been
|
||||
pre-loaded with a pronounciation dictionary.
|
||||
|
||||
|
||||
text.c / english.c / text.h
|
||||
|
||||
An implementation of US Naval Research Laboratory rules
|
||||
for converting english (american?) text to phonemes.
|
||||
|
||||
Based on the version on the comp.speech archives, main changes
|
||||
were in the encoding of the phonemes from the so called "arpabet"
|
||||
to a more concise form used in the above dictionary.
|
||||
This form (which is nmemonic if you know the International Phonetic
|
||||
Alphabet), is described in the dictionary documentation. It is
|
||||
also very close to that described in the postings by Evan Kirshenbaum
|
||||
(evan@hplerk.hpl.hp.com) to sci.lang and alt.usage.english. (The
|
||||
differences are in the vowels and are probably due to the differences
|
||||
between Britsh and American english).
|
||||
|
||||
|
||||
saynum.c
|
||||
|
||||
Code for "saying" numbers derived from same source as above.
|
||||
It has been modified to call the higher level routines recursively
|
||||
rather producing phonemes directly. This will allow any systematic
|
||||
changes (e.g. British vs American switch) to affect numbers without
|
||||
having to change this module.
|
||||
|
||||
|
||||
holmes.c / holmes.h / elements.c / elements.def
|
||||
|
||||
My implementation of a phoneme to "vocal tract parameters" system
|
||||
described by Holmes et. al. [1]
|
||||
|
||||
The original used an Analogue Hardware synthesizer.
|
||||
|
||||
opsynth.c / rsynth.h
|
||||
|
||||
My re-implementation of the "Klatt" synthesizer, described
|
||||
in Klatt [2].
|
||||
|
||||
hplay.c / hplay.h
|
||||
|
||||
hplay.h describes a common interface.
|
||||
hplay.c is a link to play/xxxplay.c
|
||||
|
||||
|
||||
Acknowledgements :
|
||||
|
||||
Particular thanks to
|
||||
Tony Robinson ajr@eng.cam.ac.uk
|
||||
|
||||
for providing FTP site for alpha testing, and telnet access to a
|
||||
variety of machines.
|
||||
|
||||
Many thanks to
|
||||
|
||||
Axel Belinfante Axel.Belinfante@cs.utwente.nl (World Wide Web)
|
||||
|
||||
Jon Iles J.P.Iles@cs.bham.ac.uk
|
||||
|
||||
Rob Hooft hooft@EMBL-Heidelberg.de (linux stuff)
|
||||
|
||||
Thierry Excoffier exco@ligiahp3.univ-lyon1.fr (playpipe for hpux)
|
||||
Markus Gyger mgyger@itr.ch (HPUX port)
|
||||
|
||||
Ben Stuyts ben@stuyts.nl (NeXT port)
|
||||
|
||||
Stephen Hocking <sysseh@devetir.qld.gov.au> (Preliminary Netaudio port)
|
||||
Greg Renda <greg@ncd.com> (Netaudio cleanup)
|
||||
Tracey Bernath <bernath@bnr.ca> (Netaudio testing)
|
||||
|
||||
"Tom Benoist" <ben@ifx.com> (SGI Port)
|
||||
Andrew Anselmo <anselmo@ERXSG.rl.plh.af.mil> (SGI testing)
|
||||
Mark Hanning-Lee <markhl@iris-355.jpl.nasa.gov> (SGI testing)
|
||||
|
||||
Cornelis van der Laan <nils@ims.uni-stuttgart.de> (freebsd)
|
||||
|
||||
for assisting me in puting this package together.
|
||||
|
||||
|
||||
References :
|
||||
|
||||
[1] Holmes J. N., Mattingly I, and Shearme J. (1964)
|
||||
"Speech Synthesis by Rule" , Language Speech 7, 127-143
|
||||
|
||||
[2] Dennis H. Klatt (1980)
|
||||
"Software for a Cascade/Parallel Formant Synthesizer",
|
||||
J. Acoust. Soc. Am. 67(3), March 1980.
|
||||
|
||||
|
||||
|
@ -1,21 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
char *Revision = "Revision: 3.0.0";
|
||||
char *say_ident = "@(#)say 3.0.1 2001/04/17"; /* so 'what' works */
|
@ -1,28 +0,0 @@
|
||||
package Sampa;
|
||||
use Exporter;
|
||||
use base qw(Exporter);
|
||||
@EXPORT_OK = qw(%unicode %description %example);
|
||||
|
||||
open(my $sampa,"sampa.htm") || die "Cannot open sampa.htm:$!";
|
||||
while (<$sampa>)
|
||||
{
|
||||
my @td = m!<td[^>]*>([^<>]*)</td>!g;
|
||||
if (@td >= 5)
|
||||
{
|
||||
my ($sampa,$IPA,$hex,$dec,$desc,$example) = @td;
|
||||
die "$IPA != $dec" unless $IPA =~ /&#$dec;/;
|
||||
die "0x$hex != $dec" unless hex($hex) == $dec;
|
||||
$sampa =~ s/&/&/;
|
||||
$unicode{$sampa} = chr($dec);
|
||||
$description{$sampa} = $desc;
|
||||
$example{$sampa} = $example;
|
||||
# warn "'$sampa' => $dec\n";
|
||||
}
|
||||
elsif (/<td>/)
|
||||
{
|
||||
warn "Skip [@td]:$_";
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
@ -1,241 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include "useconfig.h"
|
||||
#include "getargs.h"
|
||||
#include "l2u.h"
|
||||
#include "hplay.h"
|
||||
#include "aufile.h"
|
||||
|
||||
#ifndef HAVE_FTRUNCATE
|
||||
#ifdef HAVE_CHSIZE
|
||||
#define ftruncate(fd,size) chsize(fd,size)
|
||||
#else
|
||||
#define ftruncate(fd,size) /* oh well */
|
||||
#endif
|
||||
#endif
|
||||
static const short endian = 0x1234;
|
||||
|
||||
#define SUN_MAGIC 0x2e736e64 /* Really '.snd' */
|
||||
#define SUN_HDRSIZE 24 /* Size of minimal header */
|
||||
#define SUN_UNSPEC ((unsigned)(~0)) /* Unspecified data size */
|
||||
#define SUN_ULAW 1 /* u-law encoding */
|
||||
#define SUN_LIN_8 2 /* Linear 8 bits */
|
||||
#define SUN_LIN_16 3 /* Linear 16 bits */
|
||||
|
||||
file_write_p file_write = NULL;
|
||||
file_term_p file_term = NULL;
|
||||
|
||||
static char *linear_file;
|
||||
static char *au_file;
|
||||
static int au_fd = -1; /* file descriptor for .au ulaw file */
|
||||
static int linear_fd = -1;
|
||||
|
||||
static unsigned au_encoding = SUN_ULAW;
|
||||
static unsigned au_size = 0;
|
||||
|
||||
static void wblong(int fd, unsigned long x);
|
||||
static void
|
||||
wblong(int fd, long unsigned int x)
|
||||
{
|
||||
int i;
|
||||
for (i = 24; i >= 0; i -= 8)
|
||||
{
|
||||
char byte = (char) ((x >> i) & 0xFF);
|
||||
write(fd, &byte, 1);
|
||||
}
|
||||
}
|
||||
|
||||
extern void au_header(int fd,unsigned enc,unsigned rate,unsigned size,char *comment);
|
||||
|
||||
void
|
||||
au_header(int fd, unsigned int enc, unsigned int rate, unsigned int size, char *comment)
|
||||
{
|
||||
if (!comment)
|
||||
comment = "";
|
||||
wblong(fd, SUN_MAGIC);
|
||||
wblong(fd, SUN_HDRSIZE + strlen(comment));
|
||||
wblong(fd, size);
|
||||
wblong(fd, enc);
|
||||
wblong(fd, rate);
|
||||
wblong(fd, 1); /* channels */
|
||||
write(fd, comment, strlen(comment));
|
||||
}
|
||||
|
||||
static void aufile_write(int n,short *data);
|
||||
|
||||
static void
|
||||
aufile_write(int n, short int *data)
|
||||
{
|
||||
if (n > 0)
|
||||
{
|
||||
if (linear_fd >= 0)
|
||||
{
|
||||
unsigned size = n * sizeof(short);
|
||||
if (write(linear_fd, data, n * sizeof(short)) != (int) size)
|
||||
perror("write");
|
||||
}
|
||||
if (au_fd >= 0)
|
||||
{
|
||||
if (au_encoding == SUN_LIN_16)
|
||||
{
|
||||
unsigned size = n * sizeof(short);
|
||||
if (*((const char *)(&endian)) == 0x12)
|
||||
{
|
||||
if (write(au_fd, data, size) != (int) size)
|
||||
perror("write");
|
||||
else
|
||||
au_size += size;
|
||||
}
|
||||
else
|
||||
{
|
||||
int i;
|
||||
for (i=0; i < n; i++)
|
||||
{
|
||||
if (write(au_fd, ((char *)data)+1, 1) != 1)
|
||||
perror("write");
|
||||
if (write(au_fd, ((char *)data)+0, 1) != 1)
|
||||
perror("write");
|
||||
au_size += 2;
|
||||
data++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (au_encoding == SUN_ULAW)
|
||||
{
|
||||
unsigned char *plabuf = (unsigned char *) malloc(n);
|
||||
if (plabuf)
|
||||
{
|
||||
unsigned char *p = plabuf;
|
||||
unsigned char *e = p + n;
|
||||
while (p < e)
|
||||
{
|
||||
*p++ = short2ulaw(*data++);
|
||||
}
|
||||
if (write(au_fd, plabuf, n) != n)
|
||||
perror(au_file);
|
||||
else
|
||||
au_size += n;
|
||||
free(plabuf);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "%s : No memory for ulaw data\n", program);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aufile_term(void);
|
||||
|
||||
static void
|
||||
aufile_term(void)
|
||||
{
|
||||
/* Finish ulaw file */
|
||||
if (au_fd >= 0)
|
||||
{
|
||||
off_t here = lseek(au_fd, 0L, SEEK_CUR);
|
||||
if (here >= 0)
|
||||
{
|
||||
/* can seek this file - truncate it */
|
||||
ftruncate(au_fd, here);
|
||||
/* Now go back and overwite header with actual size */
|
||||
if (lseek(au_fd, 8L, SEEK_SET) == 8)
|
||||
{
|
||||
wblong(au_fd, au_size);
|
||||
}
|
||||
}
|
||||
if (au_fd != 1)
|
||||
close(au_fd);
|
||||
au_fd = -1;
|
||||
}
|
||||
/* Finish linear file */
|
||||
if (linear_fd >= 0)
|
||||
{
|
||||
ftruncate(linear_fd, lseek(linear_fd, 0L, SEEK_CUR));
|
||||
if (linear_fd != 1)
|
||||
close(linear_fd);
|
||||
linear_fd = -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
file_init(int argc, char **argv)
|
||||
{
|
||||
argc = getargs("File output", argc, argv,
|
||||
"l", "", &linear_file, "Raw 16-bit linear pathname",
|
||||
"o", "", &au_file, "Sun/Next audio file name",
|
||||
NULL);
|
||||
if (help_only)
|
||||
return argc;
|
||||
|
||||
if (au_file)
|
||||
{
|
||||
if (strcmp(au_file, "-") == 0)
|
||||
{
|
||||
au_fd = 1; /* stdout */
|
||||
}
|
||||
else
|
||||
{
|
||||
au_fd = open(au_file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
|
||||
if (au_fd < 0)
|
||||
perror(au_file);
|
||||
}
|
||||
if (au_fd >= 0)
|
||||
{
|
||||
if (samp_rate > 8000)
|
||||
au_encoding = SUN_LIN_16;
|
||||
else
|
||||
au_encoding = SUN_ULAW;
|
||||
au_header(au_fd, au_encoding, samp_rate, SUN_UNSPEC, "");
|
||||
au_size = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (linear_file)
|
||||
{
|
||||
if (strcmp(linear_file, "-") == 0)
|
||||
{
|
||||
linear_fd = 1 /* stdout */ ;
|
||||
}
|
||||
else
|
||||
{
|
||||
linear_fd = open(linear_file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
|
||||
if (linear_fd < 0)
|
||||
perror(linear_file);
|
||||
}
|
||||
}
|
||||
if (au_fd >= 0 || linear_fd >= 0)
|
||||
{
|
||||
file_write = aufile_write;
|
||||
file_term = aufile_term;
|
||||
}
|
||||
return argc;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,19 @@
|
||||
#ifndef __AUFILE_H
|
||||
#define __AUFILE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int file_init(int argc,char *argv[]);
|
||||
typedef void (*file_write_p)(int n, short *data);
|
||||
typedef void (*file_term_p)(void);
|
||||
|
||||
extern file_write_p file_write;
|
||||
extern file_term_p file_term;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,5 +1,6 @@
|
||||
#ifndef CHARSET_H
|
||||
#define CHARSET_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@ -15,4 +16,5 @@ extern int accent(int a, int c);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CHARSET_H */
|
||||
|
1453
stella/src/emucore/rsynth/config.guess
vendored
1453
stella/src/emucore/rsynth/config.guess
vendored
File diff suppressed because it is too large
Load Diff
@ -8,13 +8,13 @@
|
||||
#define HAVE_ALSA_ASOUNDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <audio/audiolib.h> header file. */
|
||||
/* #undef HAVE_AUDIO_AUDIOLIB_H */
|
||||
#define HAVE_AUDIO_AUDIOLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the `chsize' function. */
|
||||
/* #undef HAVE_CHSIZE */
|
||||
|
||||
/* Define to 1 if you have the <db.h> header file. */
|
||||
#define HAVE_DB_H 1
|
||||
/* #undef HAVE_DB_H */
|
||||
|
||||
/* Found /dev/audio */
|
||||
/* #undef HAVE_DEV_AUDIO */
|
||||
@ -35,7 +35,7 @@
|
||||
#define HAVE_FTRUNCATE 1
|
||||
|
||||
/* Define to 1 if you have the <gdbm.h> header file. */
|
||||
#define HAVE_GDBM_H 1
|
||||
/* #undef HAVE_GDBM_H */
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
@ -50,10 +50,10 @@
|
||||
/* #undef HAVE_LIBC_H */
|
||||
|
||||
/* Define to 1 if you have the `db' library (-ldb). */
|
||||
#define HAVE_LIBDB 1
|
||||
/* #undef HAVE_LIBDB */
|
||||
|
||||
/* Define to 1 if you have the `gdbm' library (-lgdbm). */
|
||||
#define HAVE_LIBGDBM 1
|
||||
/* #undef HAVE_LIBGDBM */
|
||||
|
||||
/* Define to 1 if you have the `m' library (-lm). */
|
||||
#define HAVE_LIBM 1
|
||||
@ -80,7 +80,7 @@
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Found NAS -laudio */
|
||||
/* #undef HAVE_NAS */
|
||||
#define HAVE_NAS 1
|
||||
|
||||
/* Sun hack */
|
||||
/* #undef HAVE_NONSTDARITH */
|
||||
|
@ -1,169 +0,0 @@
|
||||
/* config.h.in. Generated from configure.in by autoheader. */
|
||||
|
||||
/* Old ALSA API without pointers */
|
||||
#undef ALSA_PCM_OLD_HW_PARAMS_API
|
||||
|
||||
/* Define to 1 if you have the <alsa/asoundlib.h> header file. */
|
||||
#undef HAVE_ALSA_ASOUNDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <audio/audiolib.h> header file. */
|
||||
#undef HAVE_AUDIO_AUDIOLIB_H
|
||||
|
||||
/* Define to 1 if you have the `chsize' function. */
|
||||
#undef HAVE_CHSIZE
|
||||
|
||||
/* Define to 1 if you have the <db.h> header file. */
|
||||
#undef HAVE_DB_H
|
||||
|
||||
/* Found /dev/audio */
|
||||
#undef HAVE_DEV_AUDIO
|
||||
|
||||
/* Found /dev/dsp */
|
||||
#undef HAVE_DEV_DSP
|
||||
|
||||
/* Found /dev/dspW */
|
||||
#undef HAVE_DEV_DSPW
|
||||
|
||||
/* Found /dev/sbdsp */
|
||||
#undef HAVE_DEV_SBDSP
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#undef HAVE_FCNTL_H
|
||||
|
||||
/* Define to 1 if you have the `ftruncate' function. */
|
||||
#undef HAVE_FTRUNCATE
|
||||
|
||||
/* Define to 1 if you have the <gdbm.h> header file. */
|
||||
#undef HAVE_GDBM_H
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the `asound' library (-lasound). */
|
||||
#undef HAVE_LIBASOUND
|
||||
|
||||
/* Define to 1 if you have the `audio' library (-laudio). */
|
||||
#undef HAVE_LIBAUDIO
|
||||
|
||||
/* Define to 1 if you have the <libc.h> header file. */
|
||||
#undef HAVE_LIBC_H
|
||||
|
||||
/* Define to 1 if you have the `db' library (-ldb). */
|
||||
#undef HAVE_LIBDB
|
||||
|
||||
/* Define to 1 if you have the `gdbm' library (-lgdbm). */
|
||||
#undef HAVE_LIBGDBM
|
||||
|
||||
/* Define to 1 if you have the `m' library (-lm). */
|
||||
#undef HAVE_LIBM
|
||||
|
||||
/* Found -lX11 */
|
||||
#undef HAVE_LIBX11
|
||||
|
||||
/* Found -lXt */
|
||||
#undef HAVE_LIBXT
|
||||
|
||||
/* Define to 1 if you have the <limits.h> header file. */
|
||||
#undef HAVE_LIMITS_H
|
||||
|
||||
/* Define to 1 if you have the <machine/soundcard.h> header file. */
|
||||
#undef HAVE_MACHINE_SOUNDCARD_H
|
||||
|
||||
/* Define to 1 if you have the <malloc.h> header file. */
|
||||
#undef HAVE_MALLOC_H
|
||||
|
||||
/* Define to 1 if you have the `memcpy' function. */
|
||||
#undef HAVE_MEMCPY
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Found NAS -laudio */
|
||||
#undef HAVE_NAS
|
||||
|
||||
/* Sun hack */
|
||||
#undef HAVE_NONSTDARITH
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the `strchr' function. */
|
||||
#undef HAVE_STRCHR
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <sun/audioio.h> header file. */
|
||||
#undef HAVE_SUN_AUDIOIO_H
|
||||
|
||||
/* Define to 1 if you have the <sys/audioio.h> header file. */
|
||||
#undef HAVE_SYS_AUDIOIO_H
|
||||
|
||||
/* Define to 1 if you have the <sys/file.h> header file. */
|
||||
#undef HAVE_SYS_FILE_H
|
||||
|
||||
/* Define to 1 if you have the <sys/ioccom.h> header file. */
|
||||
#undef HAVE_SYS_IOCCOM_H
|
||||
|
||||
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||
#undef HAVE_SYS_IOCTL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/soundcard.h> header file. */
|
||||
#undef HAVE_SYS_SOUNDCARD_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#undef HAVE_SYS_TIME_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the `truncate' function. */
|
||||
#undef HAVE_TRUNCATE
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* No float prototype */
|
||||
#undef NOPROTOFLOAT
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||
#undef RETSIGTYPE
|
||||
|
||||
/* New ALSA API passes pointers to parms */
|
||||
#undef RSYNTH_ALSA_PCM_POINTER_PARAMS_API
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define to 1 if the X Window System is missing or not being used. */
|
||||
#undef X_DISPLAY_MISSING
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define to `long' if <sys/types.h> does not define. */
|
||||
#undef off_t
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1566
stella/src/emucore/rsynth/config.sub
vendored
1566
stella/src/emucore/rsynth/config.sub
vendored
File diff suppressed because it is too large
Load Diff
8958
stella/src/emucore/rsynth/configure
vendored
8958
stella/src/emucore/rsynth/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -1,322 +0,0 @@
|
||||
define([AC_CACHE_LOAD], )dnl
|
||||
define([AC_CACHE_SAVE], )dnl
|
||||
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_REVISION($Revision: 1.1 $)
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT
|
||||
AC_CONFIG_SRCDIR([say.c])
|
||||
AC_CANONICAL_HOST
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
PROGS="say"
|
||||
dnl Set up link to the native play program
|
||||
hplay=dummy
|
||||
dbm=none
|
||||
make_dist=/dev/null
|
||||
prefix=/usr/local
|
||||
|
||||
dnl AC_PREFIX_PROGRAM(gcc)
|
||||
|
||||
if test -z "$CC" && test -n "$GCC" ; then
|
||||
CC=$GCC
|
||||
fi
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
|
||||
if test "$GCC" != yes; then
|
||||
CFLAGS="-O"
|
||||
fi
|
||||
|
||||
AC_ISC_POSIX
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_RANLIB
|
||||
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS(fcntl.h limits.h sys/types.h sys/file.h sys/ioctl.h sys/time.h unistd.h)
|
||||
if test "$ac_cv_header_stdc" != yes; then
|
||||
AC_CHECK_FUNCS(strchr memcpy)
|
||||
AC_CHECK_HEADERS(memory.h malloc.h)
|
||||
fi
|
||||
AC_CHECK_FUNCS(ftruncate chsize truncate)
|
||||
|
||||
case "$host" in
|
||||
*-sun-*) hplay=sun; AC_CHECK_HEADERS(sys/ioccom.h sys/audioio.h sun/audioio.h);;
|
||||
*-sgi-*) hplay=sgi ;;
|
||||
*-next-*) hplay=NeXT; AC_CHECK_HEADERS(libc.h) ;;
|
||||
*-*-freebsd*) hplay=linux ;;
|
||||
*-*-linux*) hplay=linux ;;
|
||||
*-*-hpux*) hplay=hpux ;;
|
||||
*-*-*) echo "Unknown host type $host" ;;
|
||||
esac
|
||||
|
||||
AC_MSG_WARN(prefix is $prefix)
|
||||
|
||||
if test "$hplay" = linux; then
|
||||
AC_CHECK_HEADERS(alsa/asoundlib.h,hplay=alsa,hplay=oss)
|
||||
fi
|
||||
|
||||
if test "$hplay" = alsa; then
|
||||
|
||||
AC_MSG_CHECKING(Checking for new ALSA API)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <alsa/asoundlib.h>
|
||||
]], [[
|
||||
static snd_pcm_hw_params_t *hwparams;
|
||||
static snd_pcm_uframes_t chunk;
|
||||
snd_pcm_hw_params_get_buffer_size (hwparams,&chunk);
|
||||
]])],[
|
||||
new_alsa=yes
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_DEFINE(RSYNTH_ALSA_PCM_POINTER_PARAMS_API,1,[New ALSA API passes pointers to parms])
|
||||
],[
|
||||
new_alsa=no
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
|
||||
if test $new_alsa = no; then
|
||||
AC_MSG_CHECKING(Checking for old ALSA API)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#define ALSA_PCM_OLD_HW_PARAMS_API
|
||||
#include <alsa/asoundlib.h>
|
||||
]], [[
|
||||
static snd_pcm_hw_params_t *hwparams;
|
||||
static snd_pcm_uframes_t chunk;
|
||||
chunk = snd_pcm_hw_params_get_buffer_size (hwparams);
|
||||
]])],[
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_DEFINE(ALSA_PCM_OLD_HW_PARAMS_API,1,[Old ALSA API without pointers])
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
fi
|
||||
AC_CHECK_LIB(asound,snd_pcm_open)
|
||||
fi
|
||||
|
||||
if test "$hplay" = oss; then
|
||||
AC_CHECK_HEADERS(sys/soundcard.h machine/soundcard.h,break,hplay=dummy)
|
||||
if test -c /dev/dspW ; then
|
||||
AC_DEFINE(HAVE_DEV_DSPW,1,[Found /dev/dspW])
|
||||
fi
|
||||
if test -c /dev/audio ; then
|
||||
AC_DEFINE(HAVE_DEV_AUDIO,1,[Found /dev/audio])
|
||||
fi
|
||||
if test -c /dev/dsp ; then
|
||||
AC_DEFINE(HAVE_DEV_DSP,1,[Found /dev/dsp])
|
||||
fi
|
||||
if test -c /dev/sbdsp ; then
|
||||
AC_DEFINE(HAVE_DEV_SBDSP,1,[Found /dev/sbdsp])
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_TYPE_OFF_T
|
||||
|
||||
dnl See if float can be used in protos followed by K&R definition
|
||||
AC_MSG_CHECKING(if we can use float in prototypes)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
|
||||
} int func (float a);
|
||||
int func(a) float a; { ]])],[AC_MSG_RESULT(yes)],[
|
||||
AC_DEFINE(NOPROTOFLOAT,1,[No float prototype])
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
|
||||
if test -d $prefix/include; then
|
||||
CPPFLAGS="$CPPFLAGS -I$prefix/include"
|
||||
AC_MSG_WARN(Using -I$prefix/include)
|
||||
fi
|
||||
|
||||
if test -d $prefix/lib; then
|
||||
LIBS="-L$prefix/lib $LIBS"
|
||||
AC_MSG_WARN(Using -L$prefix/lib)
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(aDict,[ --with-aDict[=<path>] American Dictionary],[
|
||||
if test "$withval" != "" && test -r "$withval" ; then
|
||||
AC_MSG_NOTICE(Using $withval as American Dictionary)
|
||||
ADICT="$withval"
|
||||
BUILD="$BUILD aDict.db"
|
||||
DICTS="$DICTS aDict.db"
|
||||
else
|
||||
AC_MSG_WARN(Cannot read $withval for American Dictionary)
|
||||
fi])
|
||||
|
||||
AC_ARG_WITH(bDict,[ --with-bDict[=<path>] British Dictionary],[
|
||||
if test "$withval" != "" && test -r "$withval" ; then
|
||||
AC_MSG_NOTICE(Using $withval as British Dictionary)
|
||||
BDICT="$withval"
|
||||
BUILD="$BUILD bDict.db"
|
||||
DICTS="$DICTS bDict.db"
|
||||
else
|
||||
AC_MSG_WARN(Cannot read $withval for British Dictionary)
|
||||
fi])
|
||||
|
||||
AS_MESSAGE([checking for database libraries...])
|
||||
|
||||
AC_ARG_WITH(db,[ -with-db[=<path] Try and use Berkeley DB],[
|
||||
if test "$withval" != "" && test -d "$withval" ; then
|
||||
CPPFLAGS="-I$withval $CPPFLAGS"
|
||||
LIBS="-L$withval $LIBS"
|
||||
fi])
|
||||
|
||||
if test "$with_db" != "no" ; then
|
||||
AC_CHECK_LIB(db,db_create)
|
||||
if test "$ac_cv_lib_db_db_create" = yes ; then
|
||||
AC_CHECK_HEADERS(db.h,db_h=yes)
|
||||
fi
|
||||
if test "$db_h" = yes ; then
|
||||
PROGS="$PROGS mkdictdb dlookup"
|
||||
AC_MSG_WARN(Using db)
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(gdbm,[ --with-gdbm[=<path>] Try and use GNU gdbm (given source directory)],[
|
||||
if test "$withval" != "" && test -d "$withval" ; then
|
||||
CPPFLAGS="-I$withval $CPPFLAGS"
|
||||
LIBS="-L$withval $LIBS"
|
||||
else
|
||||
echo "--with-gdbm=$withval"
|
||||
fi])
|
||||
|
||||
if test "$with_gdbm" != "no" ; then
|
||||
AC_CHECK_HEADERS(gdbm.h,gdbm_h=yes)
|
||||
if test "$gdbm_h" = yes; then
|
||||
AC_CHECK_LIB(gdbm,gdbm_open)
|
||||
if test "$ac_cv_lib_gdbm_gdbm_open" = yes ; then
|
||||
AC_MSG_WARN(Using gdbm)
|
||||
PROGS="$PROGS mkdictdb dlookup"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$db_h$gdbm_h" = ""; then
|
||||
AC_MSG_WARN(No db.h and no gdbm.h)
|
||||
BUILD=""
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(PERL,perl)
|
||||
if test "perl" != ""; then
|
||||
BUILD="$BUILD perlstuff"
|
||||
EXTRA_INST="$EXTRA install_perl"
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(festival,[ --with-festival[=<path>] Festival Directory],[
|
||||
if test "$withval" != "" && test -d "$withval/lib/voices" ; then
|
||||
FESTIVAL="$withval"
|
||||
BUILD="$BUILD festival"
|
||||
EXTRA_INST="$EXTRA_INST install_festival"
|
||||
else
|
||||
AC_MSG_WARN(Cannot find $withval/lib/voices directory)
|
||||
fi])
|
||||
|
||||
DEFAULT_DICT=b
|
||||
|
||||
AC_ARG_WITH(defDict,[ --with-defDict[=<a|b>] Default Dictionary, American (a) or British (b)],[
|
||||
if test "$withval" != "" ; then
|
||||
DEFAULT_DICT="$withval"
|
||||
else
|
||||
echo "Cannot read $withval"
|
||||
fi])
|
||||
|
||||
CPPFLAGS="-I. -I$srcdir $CPPFLAGS"
|
||||
|
||||
AC_CHECK_LIB(M,atan)
|
||||
AC_CHECK_LIB(m,atan)
|
||||
|
||||
|
||||
if test "$hplay" = sgi; then
|
||||
AC_CHECK_LIB(audio,ALopenport)
|
||||
fi
|
||||
|
||||
|
||||
dnl Checking for X11
|
||||
AC_PATH_XTRA
|
||||
if test -n "$x_includes" ; then
|
||||
CPPFLAGS="$CPPFLAGS -I$x_includes"
|
||||
fi
|
||||
|
||||
AC_CHECK_LIB(socket,socket,XLIBS="-lsocket $XLIBS")
|
||||
AC_CHECK_LIB(nsl,inet_addr,XLIBS="-lnsl $XLIBS")
|
||||
AC_CHECK_LIB(X11,XauReadAuth,[
|
||||
XLIBS="$X_LIBS -lX11 $XLIBS"
|
||||
AC_DEFINE(HAVE_LIBX11,1,[Found -lX11])
|
||||
],,$X_LIBS $XLIBS $LIBS)
|
||||
|
||||
AC_CHECK_LIB(Xt,XtAppAddInput,[
|
||||
XLIBS="$X_LIBS -lXt $XLIBS"
|
||||
AC_DEFINE(HAVE_LIBXT,1,[Found -lXt])
|
||||
],,$X_LIBS $XLIBS $LIBS)
|
||||
|
||||
dnl See if we can find nas audio library
|
||||
AC_CHECK_HEADERS(audio/audiolib.h)
|
||||
if test "$ac_cv_header_audio_audiolib_h" = yes ; then
|
||||
AC_CHECK_LIB(audio,AuOpenServer,[
|
||||
XLIBS="$XLIBS -laudio"
|
||||
AC_DEFINE(HAVE_NAS,1,[Found NAS -laudio])
|
||||
],,$XLIBS $LIBS)
|
||||
if test "$ac_cv_lib_audio_AuOpenServer" = yes; then
|
||||
if test "$hplay" = dummy; then
|
||||
hplay="na"
|
||||
LIBS="$XLIBS $LIBS"
|
||||
XLIBS=""
|
||||
else
|
||||
PROGS="$PROGS nasay"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Check for obscure but speed-enhancing sun hack
|
||||
if test "$hplay" = sun; then
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[nonstandard_arithmetic();]])],[AC_DEFINE(HAVE_NONSTDARITH,1,[Sun hack])],[])
|
||||
fi
|
||||
|
||||
dnl Checks for library functions.
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_TYPE_SIGNAL
|
||||
|
||||
AC_MSG_CHECKING(for GNU make)
|
||||
if make -v 2>/dev/null | grep -i 'GNU *Make' > /dev/null ; then
|
||||
make_dist=$srcdir/config/make_dist
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
AC_SUBST(CC)
|
||||
AC_SUBST(RANLIB)
|
||||
AC_SUBST(INSTALL)
|
||||
AC_SUBST(INSTALL_PROGRAM)
|
||||
AC_SUBST(INSTALL_DATA)
|
||||
AC_SUBST(BUILD)
|
||||
AC_SUBST(EXTRA_INST)
|
||||
AC_SUBST(PERL)
|
||||
AC_SUBST(FESTIVAL)
|
||||
AC_SUBST(ADICT)
|
||||
AC_SUBST(BDICT)
|
||||
AC_SUBST(DICTS)
|
||||
AC_SUBST(DEFAULT_DICT)
|
||||
AC_SUBST(XLIBS)
|
||||
AC_SUBST(PROGS)
|
||||
AC_SUBST(NOPROTOFLOAT)
|
||||
AC_SUBST(HAVE_NONSTDARITH)
|
||||
AC_SUBST_FILE(make_dist)
|
||||
|
||||
ac_sources="config/${hplay}play.c"
|
||||
ac_dests="hplay.c"
|
||||
while test -n "$ac_sources"; do
|
||||
set $ac_dests; ac_dest=$1; shift; ac_dests=$*
|
||||
set $ac_sources; ac_source=$1; shift; ac_sources=$*
|
||||
ac_config_links_1="$ac_config_links_1 $ac_dest:$ac_source"
|
||||
done
|
||||
AC_CONFIG_LINKS([$ac_config_links_1])
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
||||
|
@ -17,7 +17,7 @@
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
/* $Id: darray.h,v 1.1 2006-06-11 07:13:23 urchlay Exp $
|
||||
/* $Id: darray.h,v 1.2 2006-06-11 21:49:07 stephena Exp $
|
||||
*/
|
||||
#if !defined(DARRAY_H)
|
||||
#define DARRAY_H
|
||||
@ -27,7 +27,6 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct
|
||||
{char *data; /* the items */
|
||||
unsigned items; /* number of slots used */
|
||||
@ -97,7 +96,4 @@ extern int darray_fget(FILE * f, darray_ptr p);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* DARRAY_H */
|
||||
|
||||
|
||||
|
@ -1,55 +0,0 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
use Audio::Data;
|
||||
use Audio::Play;
|
||||
|
||||
my $f = shift;
|
||||
my $n = shift(@ARGV) + 0;
|
||||
|
||||
my @data;
|
||||
while (<>)
|
||||
{
|
||||
s/#.*$//;
|
||||
next if /^\s*$/;
|
||||
s/^\s+//;
|
||||
my @f = split(/\s+/,$_);
|
||||
my $v = 0+$f[$n];
|
||||
push(@data,$v);
|
||||
}
|
||||
|
||||
my $au = Audio::Data->new(rate => 11025);
|
||||
|
||||
$au->data(@data);
|
||||
|
||||
$au /= 32768;
|
||||
|
||||
|
||||
my ($max,$min) = $au->bounds;
|
||||
my $dur = $au->duration;
|
||||
warn "Original $max - $min ${dur}s\n";
|
||||
|
||||
if ($max > 1 || $min < -1)
|
||||
{
|
||||
my $dc = ($max+$min)/2;
|
||||
$au -= $dc;
|
||||
my $size = ($max-$min)/2;
|
||||
$au /= $size;
|
||||
($max,$min) = $au->bounds;
|
||||
$dur = $au->duration;
|
||||
warn "Normaized $max - $min ${dur}s\n";
|
||||
|
||||
}
|
||||
|
||||
open(my $fh,">$f") || die "Cannot open $f:$!";
|
||||
$au->Save($fh,"");
|
||||
close($fh);
|
||||
|
||||
# Audio::Play->new->play($au);
|
||||
|
||||
open($fh,"$f") || die "Cannot open $f:$!";
|
||||
my $rb = Audio::Data->new(Load => $fh);
|
||||
close($fh);
|
||||
|
||||
($max,$min) = $rb->bounds;
|
||||
$dur = $rb->duration;
|
||||
warn "Duration $max - $min ${dur}s\n";
|
||||
|
@ -1,2 +1,14 @@
|
||||
#ifndef __DEUTCSH_H
|
||||
#define __DEUTCSH_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern lang_t Deutsch;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,152 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 1994,2001-2003 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
/* jms: changed default for dict_path to "g" */
|
||||
#include "config.h"
|
||||
#ifdef HAVE_IO_H
|
||||
#include <io.h>
|
||||
#endif /* HAVE_IO_H */
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "charset.h"
|
||||
#include "phones.h"
|
||||
#include "useconfig.h"
|
||||
#include "dbif.h"
|
||||
|
||||
#ifndef DEFAULT_DICT
|
||||
#define DEFAULT_DICT "b"
|
||||
#endif
|
||||
char *dict_path = DEFAULT_DICT;
|
||||
|
||||
#ifdef DB_HANDLE
|
||||
|
||||
DB_HANDLE dict;
|
||||
|
||||
#include "lang.h"
|
||||
#include "dict.h"
|
||||
|
||||
#ifndef DICT_DIR
|
||||
#define DICT_DIR "/usr/local/lib/dict"
|
||||
#endif
|
||||
|
||||
|
||||
unsigned char *
|
||||
dict_lookup(const char *s, unsigned int n)
|
||||
{
|
||||
if (!n)
|
||||
n = strlen(s);
|
||||
if (dict) {
|
||||
unsigned char *p = (unsigned char *) s;
|
||||
DATUM key;
|
||||
DATUM data;
|
||||
unsigned int i;
|
||||
char *buf = (char *) malloc(n);
|
||||
DATUM_SET(key, buf, n);
|
||||
for (i = 0; i < n; i++) {
|
||||
buf[i] = (isupper(p[i])) ? tolower(p[i]) : p[i];
|
||||
}
|
||||
DB_FETCH(dict, key, data);
|
||||
free(buf);
|
||||
if (DATUM_DATA(data)) {
|
||||
unsigned char *w = (unsigned char *) realloc(DATUM_DATA(data),
|
||||
DATUM_SIZE(data) +
|
||||
1);
|
||||
w[DATUM_SIZE(data)] = '\0';
|
||||
return w;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void choose_dialect(void);
|
||||
|
||||
static void
|
||||
choose_dialect(void)
|
||||
{
|
||||
unsigned char *word = dict_find("wash", 0);
|
||||
if (word && word[0] == W) {
|
||||
if (word[1] == OH)
|
||||
dialect = ph_br;
|
||||
else if (word[1] == AA1)
|
||||
dialect = ph_am;
|
||||
free(word);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
dict_init(const char *dictname)
|
||||
{
|
||||
char *buf = NULL;
|
||||
#ifdef OS2
|
||||
char *dictdir = getenv("ETC");
|
||||
if (dictdir == NULL)
|
||||
dictdir = DICT_DIR; /* jms: if ETC is not set */
|
||||
#else
|
||||
char *dictdir = DICT_DIR;
|
||||
#endif
|
||||
buf =
|
||||
(char *) malloc(strlen(dictdir) + strlen("Dict.db") +
|
||||
strlen(dict_path) + 2);
|
||||
sprintf(buf, "%sDict.db", dictname);
|
||||
DB_OPEN_READ(dict, buf);
|
||||
if (!dict) {
|
||||
sprintf(buf, "%s/%sDict.db", dictdir, dictname);
|
||||
DB_OPEN_READ(dict, buf);
|
||||
}
|
||||
if (dict) {
|
||||
dict_path = (char *) realloc(buf, strlen(buf) + 1);
|
||||
lang->lookup = dict_lookup;
|
||||
choose_dialect();
|
||||
}
|
||||
return have_dict;
|
||||
}
|
||||
|
||||
void
|
||||
dict_term(void)
|
||||
{
|
||||
if (dict) {
|
||||
DB_CLOSE(dict);
|
||||
free(dict_path);
|
||||
lang->lookup = 0;
|
||||
dict = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
unsigned char *
|
||||
dict_find(char *s, unsigned n)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
dict_init(int argc, char *argv[])
|
||||
{
|
||||
return argc;
|
||||
}
|
||||
|
||||
void
|
||||
dict_term(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endif
|
@ -1,77 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
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
|
||||
|
||||
*/
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "useconfig.h"
|
||||
#include "dict.h"
|
||||
#include "phones.h"
|
||||
#include "getargs.h"
|
||||
#include "english.h"
|
||||
|
||||
lang_t *lang = &English;
|
||||
|
||||
|
||||
static void show(char *s);
|
||||
static void
|
||||
show(char *s)
|
||||
{
|
||||
unsigned char *p = dict_find(s, strlen(s));
|
||||
printf("%s", s);
|
||||
if (p) {
|
||||
int l = strlen((char *) p);
|
||||
int i;
|
||||
for (i = 0; i < l; i++)
|
||||
printf(" %s", ph_name[(unsigned) (p[i])]);
|
||||
printf(" [");
|
||||
for (i = 0; i < l; i++)
|
||||
printf("%s", dialect[(unsigned) (p[i])]);
|
||||
printf("]\n");
|
||||
free(p);
|
||||
}
|
||||
else
|
||||
printf(" ???\n");
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char **argv, char **envp)
|
||||
{
|
||||
argc = getargs("Dictionary", argc, argv,
|
||||
"d", "", &dict_path, "Which dictionary [b|a|g]", NULL);
|
||||
|
||||
|
||||
|
||||
if (help_only) {
|
||||
fprintf(stderr, "Usage: %s [options as above] words to lookup\n",
|
||||
argv[0]);
|
||||
}
|
||||
else {
|
||||
if (dict_path && *dict_path)
|
||||
dict_init(dict_path);
|
||||
if (have_dict) {
|
||||
int i;
|
||||
for (i = 1; i < argc; i++) {
|
||||
show(argv[i]);
|
||||
}
|
||||
dict_term();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -1,83 +0,0 @@
|
||||
#!/tools/local/perl -w
|
||||
use strict;
|
||||
use Rsynth::Elements;
|
||||
read_elements();
|
||||
my $vv;
|
||||
my $nv = 0;
|
||||
my $tv = 0;
|
||||
foreach my $e (@eNames)
|
||||
{
|
||||
if ($elem{$e}{features}{vwl})
|
||||
{
|
||||
$nv++;
|
||||
my $av = $elem{$e}{'av'}[0];
|
||||
$vv = $av unless defined $vv;
|
||||
$tv = $tv+$av;
|
||||
if ($vv != $av)
|
||||
{
|
||||
warn "$e has av=$av not $vv\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
$vv = int($tv/$nv+0.5);
|
||||
warn "Vowels are av=$vv\n";
|
||||
foreach my $e (@eNames)
|
||||
{
|
||||
|
||||
my $f = $elem{$e}{features};
|
||||
if ($elem{$e}{'f2'}[0] - $elem{$e}{'f1'}[0] < 200)
|
||||
{
|
||||
warn sprintf("$e : f2 %d too close to f1 %d\n", $elem{$e}{'f2'}[0], $elem{$e}{'f1'}[0]);
|
||||
set($elem{$e}{'f2'},$elem{$e}{'f1'}[0]+200);
|
||||
}
|
||||
if ($elem{$e}{'f3'}[0] - $elem{$e}{'f2'}[0] < 200)
|
||||
{
|
||||
warn sprintf("$e : f3 %d too close to f2 %d\n", $elem{$e}{'f3'}[0], $elem{$e}{'f2'}[0]);
|
||||
}
|
||||
if (!$f->{vwl})
|
||||
{
|
||||
my $av = $elem{$e}{'av'}[0];
|
||||
|
||||
if ($av >= $vv)
|
||||
{
|
||||
warn "$e ".join(',',keys %{$elem{$e}{features}})." has av=$av\n";
|
||||
if ($f->{apr} || $f->{nas} || $f->{lat})
|
||||
{
|
||||
set($elem{$e}{'av'},$vv-10);
|
||||
}
|
||||
elsif ($f->{frc} || $f->{stp})
|
||||
{
|
||||
set($elem{$e}{'av'},$vv-13);
|
||||
}
|
||||
}
|
||||
if ($av > 0)
|
||||
{
|
||||
my $av = $elem{$e}{'avc'}[0];
|
||||
|
||||
if ($av >= $vv)
|
||||
{
|
||||
warn "$e ".join(',',keys %{$elem{$e}{features}})." has avc=$av\n";
|
||||
if ($f->{apr} || $f->{nas} || $f->{lat})
|
||||
{
|
||||
set($elem{$e}{'avc'},$vv-10);
|
||||
}
|
||||
elsif ($f->{frc} || $f->{stp})
|
||||
{
|
||||
set($elem{$e}{'avc'},$vv-13);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
write_elements("Elements.def");
|
||||
|
||||
sub set
|
||||
{
|
||||
my ($a,$v) = @_;
|
||||
warn "Setting to $v\n";
|
||||
my $p = $a->[2]/100;
|
||||
$a->[0] = $v;
|
||||
$a->[1] = $v * (1-$p);
|
||||
}
|
@ -1,254 +0,0 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
|
||||
use Tk;
|
||||
use Tk::Font;
|
||||
use Rsynth::Elements;
|
||||
use Audio::Play;
|
||||
use blib './Rsynth';
|
||||
use Rsynth::Audio;
|
||||
|
||||
my $au = Audio::Data->new(rate => 11025);
|
||||
my $synth = Rsynth::Audio->new($au);
|
||||
|
||||
my $mw = MainWindow->new;
|
||||
$mw->menu;
|
||||
|
||||
my $IPA = $mw->Font(family => 'Gentium',
|
||||
point => 180, slant => 'r',
|
||||
weight => 'medium');
|
||||
|
||||
my $t = $mw->Scrolled(Text => -width => 25,-background => 'black')
|
||||
->pack(-side => 'right', -expand => 1, -fill => 'both');
|
||||
|
||||
#
|
||||
# Vowel diagram to screen:
|
||||
# Y axis is F1 - higher values near bottom, so just scaled
|
||||
|
||||
sub F1BASE () { 190 } # Lowest F1 and origin for Y axis
|
||||
sub F1MAX () { 900 } # Highest F1
|
||||
sub F1SCALE () { 3 }
|
||||
|
||||
# X axis is F2-F1 with higher values on the left
|
||||
#
|
||||
sub F2MIN () { 700 } # Lowest F2
|
||||
sub F2MAX () { 2500 } # Highest F2
|
||||
sub F2BASE () { 2400 } # Screen X offset to ensure +ve x.
|
||||
sub F2SCALE () { 6 }
|
||||
|
||||
# F3 is a 3rd dimension which is a pain.
|
||||
# F3 is lowest for /r/ sounds - low F3 is their characteristic.
|
||||
# F3 is highest for unrounded vowels and lower for rounded vowels
|
||||
# (F2 is lower for rounded vowels too)
|
||||
# Note that /i/ and /j/ and possibly /&/ F3 isn't
|
||||
# from usual "cavity".
|
||||
|
||||
sub F3MIN () { 1600 }
|
||||
sub F3MAX () { 3200 }
|
||||
sub F3SCALE () { 6 }
|
||||
|
||||
sub MINSPACE () { 200 }
|
||||
|
||||
sub f1f2toscreen
|
||||
{
|
||||
my ($f1,$f2) = @_;
|
||||
my $x = (F2BASE - $f2 + $f1)/F2SCALE;
|
||||
my $y = ($f1 - F1BASE)/F1SCALE;
|
||||
return ($x,$y);
|
||||
}
|
||||
|
||||
sub f1f2fromscreen
|
||||
{
|
||||
my ($x,$y) = @_;
|
||||
my $f1 = F1BASE + F1SCALE*$y;
|
||||
my $f2 = F2BASE - F2SCALE*$x+$f1;
|
||||
if ($f2 < $f1 + MINSPACE)
|
||||
{
|
||||
$f2 = $f1 + MINSPACE;
|
||||
}
|
||||
|
||||
return ($f1,$f2);
|
||||
}
|
||||
|
||||
sub f2f3toscreen
|
||||
{
|
||||
my ($f2,$f3) = @_;
|
||||
my $x = (F2BASE - $f2)/F2SCALE;
|
||||
my $y = ($f3 - F3MIN)/F3SCALE;
|
||||
return ($x,$y);
|
||||
}
|
||||
|
||||
sub f2f3fromscreen
|
||||
{
|
||||
my ($x,$y) = @_;
|
||||
my $f2 = F2BASE - $x *F2SCALE;
|
||||
my $f3 = F3MIN + $y *F3SCALE;
|
||||
if ($f3 < $f2 + MINSPACE)
|
||||
{
|
||||
$f3 = $f2 + MINSPACE;
|
||||
}
|
||||
return ($f2,$f3);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
my ($width,$height) = f1f2toscreen(F1MAX, F2MIN);
|
||||
|
||||
my $left = $mw->Frame->pack(-side => 'left', -fill => 'y', -expand => 0);
|
||||
|
||||
my $f1f2 = $left->Canvas(-background => 'black',
|
||||
-height => $height,
|
||||
-width => $width)
|
||||
->pack(-side => 'top', -expand => 0);
|
||||
|
||||
($width,$height) = f2f3toscreen(F2MIN, F3MAX);
|
||||
my $f2f3 = $left->Canvas(-background => 'black',
|
||||
-height => $height,
|
||||
-width => $width)
|
||||
->pack(-side => 'top', -expand => 0);
|
||||
|
||||
my $d = $mw->Text(-width => 15, -font => $IPA)
|
||||
->pack(-side => 'left',-fill => 'y');
|
||||
|
||||
my $cur12 = $f1f2->create(oval => [0,0,0,0],-outline => 'yellow');
|
||||
my $cur23 = $f2f3->create(oval => [0,0,0,0],-outline => 'yellow');
|
||||
|
||||
my @colours = qw(white red green blue magenta cyan orange brown pink violet);
|
||||
my %colour;
|
||||
my $i = 0;
|
||||
|
||||
read_elements();
|
||||
|
||||
my $ve;
|
||||
|
||||
foreach my $e (sort { height($a) <=> height($b) ||
|
||||
front($a) <=> front($b) ||
|
||||
round($a) <=> round($b) }
|
||||
grep { $_->{features}{vwl} } values %elem)
|
||||
{
|
||||
my $ch = $e->{unicode};
|
||||
utf8::decode($ch);
|
||||
if ($e->{features}{vwl} || $e->{features}{gld})
|
||||
{
|
||||
next if ($e->{features}{nas} || $e->{features}{dip});
|
||||
my @feat = features($e);
|
||||
my $key = join(' ',@feat);
|
||||
my $colour = $colour{$key};
|
||||
unless (exists $colour{$key})
|
||||
{
|
||||
$colour = $colours[$i++ % @colours] ;
|
||||
$t->tagConfigure($colour,-foreground => $colour, -font => $IPA);
|
||||
$colour{$key} = $colour;
|
||||
}
|
||||
my $sm = $e->{sampa};
|
||||
$t->insert('end',"$sm [$ch] - @feat\n",[$colour,$e->{name}]);
|
||||
|
||||
my ($x,$y) = f1f2toscreen($e->{f1}[0],$e->{f2}[0]);
|
||||
my $id12 = $f1f2->createText($x, $y,
|
||||
-font => $IPA,
|
||||
-fill => $colour, -text => $ch);
|
||||
($x,$y) = f2f3toscreen($e->{f2}[0],$e->{f3}[0]);
|
||||
my $id23 = $f2f3->createText($x, $y,
|
||||
-font => $IPA,
|
||||
-fill => $colour, -text => $ch);
|
||||
if ($e->{sampa} eq '#')
|
||||
{
|
||||
$ve = $e;
|
||||
$f1f2->Tk::bind('<3>',[\&Click12,$ve,$id12,$id23,Ev('x'),Ev('y'),Ev('s')]);
|
||||
$f2f3->Tk::bind('<3>',[\&Click23,$ve,$id12,$id23,Ev('x'),Ev('y'),Ev('s')]);
|
||||
}
|
||||
$f1f2->bind($id12,'<1>',[\&display,$e,$id12,$id23]);
|
||||
$f1f2->bind($id12,'<2>',[\&change,$e,$id12,$id23]);
|
||||
$f2f3->bind($id23,'<1>',[\&display,$e,$id12,$id23]);
|
||||
$f2f3->bind($id23,'<2>',[\&change,$e,$id12,$id23]);
|
||||
$t->tagBind($e->{name},'<1>',[\&display,$e,$id12,$id23]);
|
||||
$t->tagBind($e->{name},'<2>',[\&change,$e,$id12,$id23]);
|
||||
}
|
||||
}
|
||||
|
||||
sub Click12
|
||||
{
|
||||
my ($w,$e,$id12,$id23,$wx,$wy,$s) = @_;
|
||||
my $x = $w->canvasx($wx);
|
||||
my $y = $w->canvasy($wy);
|
||||
my ($f1,$f2) = f1f2fromscreen($x,$y);
|
||||
$e->{f1}[0] = $f1;
|
||||
$e->{f2}[0] = $f2;
|
||||
display($w,$e,$id12,$id23);
|
||||
}
|
||||
|
||||
sub Click23
|
||||
{
|
||||
my ($w,$e,$id12,$id23,$wx,$wy,$s) = @_;
|
||||
my $x = $w->canvasx($wx);
|
||||
my $y = $w->canvasy($wy);
|
||||
my ($f2,$f3) = f2f3fromscreen($x,$y);
|
||||
$e->{f2}[0] = $f2;
|
||||
$e->{f3}[0] = $f3;
|
||||
display($w,$e,$id12,$id23);
|
||||
}
|
||||
|
||||
sub change
|
||||
{
|
||||
my ($w,$e,$id12,$id23) = @_;
|
||||
foreach my $key (qw(f1 f2 f3))
|
||||
{
|
||||
$e->{$key}[0] = $ve->{$key}[0];
|
||||
}
|
||||
display($w,$e,$id12,$id23);
|
||||
}
|
||||
|
||||
sub display
|
||||
{
|
||||
my ($w,$e,$id12,$id23) = @_;
|
||||
|
||||
my ($bx,$by) = f1f2toscreen($e->{f1}[0],$e->{f2}[0]);
|
||||
$f1f2->coords($id12,[$bx,$by]);
|
||||
my @coord = $f1f2->bbox($id12);
|
||||
$f1f2->coords($cur12,\@coord);
|
||||
|
||||
($bx,$by) = f2f3toscreen($e->{f2}[0],$e->{f3}[0]);
|
||||
$f2f3->coords($id23,[$bx,$by]);
|
||||
@coord = $f2f3->bbox($id23);
|
||||
$f2f3->coords($cur23,\@coord);
|
||||
|
||||
$e->update;
|
||||
$d->delete('1.0','end');
|
||||
my $ch = $e->{unicode};
|
||||
utf8::decode($ch);
|
||||
$d->insert('end',$e->{name}.' '.$e->{sampa}." [$ch]\n");
|
||||
$d->insert('end',join(' ',features($e))."\n");
|
||||
foreach my $sym (@pNames)
|
||||
{
|
||||
$d->insert('end',sprintf("$sym:%4d\n",$e->{$sym}[0]));
|
||||
}
|
||||
# Clear audio buffer
|
||||
$au->length(0);
|
||||
# An empty element/dur "string".
|
||||
my $elm = '';
|
||||
my $pre = '.';
|
||||
my $post = '.';
|
||||
my $idx = $e->{idx};
|
||||
foreach my $ename (@{$Rsynth::Phones::phtoelm{$pre}},$e->{name},
|
||||
@{$Rsynth::Phones::phtoelm{$post}})
|
||||
{
|
||||
my $t = $elem{$ename};
|
||||
$elm .= chr($t->{idx});
|
||||
$elm .= ($t->{idx} == $idx) ? chr(10) : chr($t->{du});
|
||||
$d->insert('end',$ename);
|
||||
}
|
||||
$synth->interpolate($elm);
|
||||
my $svr = Audio::Play->new;
|
||||
$d->insert(end => "\n");
|
||||
$svr->play($au) if $svr;
|
||||
}
|
||||
|
||||
$f1f2->configure(-scrollregion => [$f1f2->bbox('all')]);
|
||||
|
||||
MainLoop;
|
||||
|
||||
write_elements("Elements.edt");
|
||||
|
||||
|
||||
|
@ -1,2 +1,12 @@
|
||||
#ifndef __ENGLISH_H
|
||||
#define __ENGLISH_H
|
||||
|
||||
#include "lang.h"
|
||||
extern lang_t English;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern lang_t English;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,121 +0,0 @@
|
||||
; Mbrola demo file for en1.
|
||||
; Copyright (c) 1997 Faculte Polytechnique de Mons
|
||||
;
|
||||
; "It would be a considerable invention indeed, that of
|
||||
; a machine able to mimic our speech, with its sounds
|
||||
; and articulations. I think it is not impossible."
|
||||
;
|
||||
; - Leonhard Euler, 1761
|
||||
_ 70
|
||||
I 80 0 115 50 142 99 142
|
||||
t 90
|
||||
w 100
|
||||
U 50 50 205
|
||||
d 40 25 195 87 181
|
||||
b 80
|
||||
i: 140 0 132 99 108
|
||||
@ 30 50 107
|
||||
k 90
|
||||
@ 40 0 145 100 121
|
||||
n 40 50 117
|
||||
s 110
|
||||
I 80 50 218
|
||||
d 40
|
||||
r 50
|
||||
@ 60 75 160
|
||||
b 90 100 109
|
||||
@ 30
|
||||
5 90
|
||||
I 60 75 109
|
||||
n 80
|
||||
v 40
|
||||
e 90 0 109 50 153 75 177
|
||||
n 30 25 195
|
||||
S 80
|
||||
@ 70
|
||||
n 30
|
||||
I 70 75 112
|
||||
n 130 100 98
|
||||
d 60 75 108
|
||||
i: 270 30 177 60 100 100 156
|
||||
d 120 100 177
|
||||
_ 300
|
||||
D 130 50 114
|
||||
{ 100 45 142
|
||||
t 110
|
||||
V 30 25 119
|
||||
v 60
|
||||
@ 70
|
||||
m 100
|
||||
@ 30 100 100
|
||||
S 230
|
||||
i: 180 0 186 35 200 50 190 95 133
|
||||
n 160 6 140 85 145
|
||||
_ 300
|
||||
eI 150 54 150 77 160
|
||||
b 60
|
||||
@ 10
|
||||
l 70 20 137 70 135
|
||||
t 100
|
||||
@ 80 10 105
|
||||
m 78
|
||||
I 60 60 160
|
||||
m 50 50 173
|
||||
I 50 50 140
|
||||
k 120
|
||||
aU 120 5 120 75 97
|
||||
s 140
|
||||
p 100
|
||||
i: 120 15 161 35 148 75 186
|
||||
t 30
|
||||
S 280
|
||||
_ 300
|
||||
w 100 90 115
|
||||
I 30
|
||||
D 60 15 117 60 123
|
||||
I 70 75 205
|
||||
t 60
|
||||
s 60
|
||||
s 100
|
||||
aU 220 5 145 15 126 60 106 95 121
|
||||
n 30
|
||||
d 30 33 140
|
||||
z 70
|
||||
{ 70 0 110 85 119
|
||||
n 30 33 115
|
||||
d 40
|
||||
A: 90 25 101 65 111
|
||||
t 110
|
||||
I 30 50 170
|
||||
k 50
|
||||
j 50 20 225 70 237
|
||||
@ 30 35 235
|
||||
l 50
|
||||
eI 110 5 135 75 108
|
||||
S 140
|
||||
@ 40 35 95
|
||||
n 80 95 99
|
||||
z 230
|
||||
_ 640
|
||||
aI 210 90 105
|
||||
T 140
|
||||
I 30 35 216
|
||||
N 180 85 250
|
||||
k 110
|
||||
I 30 50 222
|
||||
t 70
|
||||
s 80
|
||||
_ 70
|
||||
n 60 25 184 65 177
|
||||
Q 130 5 181 80 222
|
||||
t 120
|
||||
I 30 15 221
|
||||
m 60 85 173
|
||||
p 80
|
||||
Q 100 10 126 85 109
|
||||
s 120
|
||||
@ 50
|
||||
b 60
|
||||
@ 10 15 98
|
||||
5 190 100 103
|
||||
_ 50
|
@ -1,3 +0,0 @@
|
||||
It would be a considerable invention indeed, that of
|
||||
a machine able to mimic our speech, with its sounds
|
||||
and articulations. I think it is not impossible.
|
@ -1,103 +0,0 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; ;;
|
||||
;;; Nicholas Ing-Simmons ;;
|
||||
;;; Copyright (c) 2002 ;;
|
||||
;;; All Rights Reserved. ;;
|
||||
;;; ;;
|
||||
;;; Permission is hereby granted, free of charge, to use and distribute ;;
|
||||
;;; this software and its documentation without restriction, including ;;
|
||||
;;; without limitation the rights to use, copy, modify, merge, publish, ;;
|
||||
;;; distribute, sublicense, and/or sell copies of this work, and to ;;
|
||||
;;; permit persons to whom this work is furnished to do so, subject to ;;
|
||||
;;; the following conditions: ;;
|
||||
;;; 1. The code must retain the above copyright notice, this list of ;;
|
||||
;;; conditions and the following disclaimer. ;;
|
||||
;;; 2. Any modifications must be clearly marked as such. ;;
|
||||
;;; 3. Original authors' names are not deleted. ;;
|
||||
;;; 4. The authors' names are not used to endorse or promote products ;;
|
||||
;;; derived from this software without specific prior written ;;
|
||||
;;; permission. ;;
|
||||
;;; ;;
|
||||
;;; THE UNIVERSITY OF EDINBURGH AND THE CONTRIBUTORS TO THIS WORK ;;
|
||||
;;; DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ;;
|
||||
;;; ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT ;;
|
||||
;;; SHALL THE UNIVERSITY OF EDINBURGH NOR THE CONTRIBUTORS BE LIABLE ;;
|
||||
;;; FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ;;
|
||||
;;; WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ;;
|
||||
;;; AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ;;
|
||||
;;; ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ;;
|
||||
;;; THIS SOFTWARE. ;;
|
||||
;;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;
|
||||
;;; Support for rsynth as an external module.
|
||||
;;; Derived from the handler for mbrola by Nick Ing-Simmons
|
||||
;;;
|
||||
|
||||
;;; You might want to set this in your sitevars.scm
|
||||
(defvar rsynth_progname "/usr/local/bin/say"
|
||||
"rsynth_progname
|
||||
The program name for rsynth.")
|
||||
(defvar rsynth_options "-E -v -a"
|
||||
"rsynth_options
|
||||
Command line options to be passed during rsynth Synthesis.")
|
||||
|
||||
(define (rsynth_Synth utt)
|
||||
"(rsynth_Synth UTT)
|
||||
Synthesize using rsynth as external module. Basically dump the info
|
||||
from this utterance. Call rsynth and reload the waveform into utt.
|
||||
[see rsynth]"
|
||||
(let ((filename (make_tmp_filename)))
|
||||
(save_segments_rsynth utt filename)
|
||||
(system (string-append rsynth_progname " "
|
||||
rsynth_options
|
||||
" -o " filename ".au"
|
||||
" -f " filename
|
||||
))
|
||||
(utt.import.wave utt (string-append filename ".au"))
|
||||
(apply_hooks after_synth_hooks utt)
|
||||
(delete-file filename)
|
||||
(delete-file (string-append filename ".au"))
|
||||
utt))
|
||||
|
||||
(define (save_segments_rsynth utt filename)
|
||||
"(save_segments_rsynth UTT FILENAME)
|
||||
Save segment information in rsynth format in filename. The format is
|
||||
phone duration (ms) [% position F0 target]*. [see rsynth]"
|
||||
(let ((fd (fopen filename "w")))
|
||||
(mapcar
|
||||
(lambda (segment)
|
||||
(save_seg_rsynth_entry
|
||||
(item.feat segment 'name)
|
||||
(item.feat segment 'segment_start)
|
||||
(item.feat segment 'segment_duration)
|
||||
(mapcar
|
||||
(lambda (targ_item)
|
||||
(list
|
||||
(item.feat targ_item "pos")
|
||||
(item.feat targ_item "f0")))
|
||||
(item.relation.daughters segment 'Target)) ;; list of targets
|
||||
fd))
|
||||
(utt.relation.items utt 'Segment))
|
||||
(fclose fd)))
|
||||
|
||||
(define (save_seg_rsynth_entry name start dur targs fd)
|
||||
"(save_seg_rsynth_entry ENTRY NAME START DUR TARGS FD)
|
||||
Entry contains, (name duration num_targs start 1st_targ_pos 1st_targ_val)."
|
||||
(format fd "%s %d " name (nint (* dur 1000)))
|
||||
(if targs ;; if there are any targets
|
||||
(mapcar
|
||||
(lambda (targ) ;; targ_pos and targ_val
|
||||
(let ((targ_pos (car targ))
|
||||
(targ_val (car (cdr targ))))
|
||||
|
||||
(format fd "%d %d "
|
||||
(nint (* 100 (/ (- targ_pos start) dur))) ;; % pos of target
|
||||
(nint (parse-number targ_val))) ;; target value
|
||||
))
|
||||
targs))
|
||||
(terpri fd)
|
||||
(terpri fd)
|
||||
)
|
||||
|
||||
(provide 'rsynth)
|
@ -1,46 +0,0 @@
|
||||
uh V
|
||||
e e
|
||||
a {
|
||||
o Q
|
||||
i I
|
||||
u U
|
||||
ii i
|
||||
uu u
|
||||
oo O
|
||||
aa A
|
||||
@@ 3
|
||||
ai aI
|
||||
ei eI
|
||||
oi OI
|
||||
au aU
|
||||
ou @U
|
||||
e@ e@
|
||||
i@ I@
|
||||
u@ U@
|
||||
@ @
|
||||
p b
|
||||
t t
|
||||
k k
|
||||
b b
|
||||
d d
|
||||
g g
|
||||
s s
|
||||
z z
|
||||
sh S
|
||||
zh Z
|
||||
f f
|
||||
v v
|
||||
th T
|
||||
dh D
|
||||
ch tS
|
||||
jh dZ
|
||||
h h
|
||||
m m
|
||||
n n
|
||||
ng N
|
||||
l l
|
||||
ll 5
|
||||
y j
|
||||
r r
|
||||
w w
|
||||
# _
|
@ -1,46 +0,0 @@
|
||||
uh V
|
||||
e e
|
||||
a {
|
||||
o Q
|
||||
i I
|
||||
u U
|
||||
ii i
|
||||
uu u
|
||||
oo O
|
||||
aa A
|
||||
@@ 3
|
||||
ai aI
|
||||
ei eI
|
||||
oi OI
|
||||
au aU
|
||||
ou @U
|
||||
e@ e@
|
||||
i@ I@
|
||||
u@ U@
|
||||
@ @
|
||||
p b
|
||||
t t
|
||||
k k
|
||||
b b
|
||||
d d
|
||||
g g
|
||||
s s
|
||||
z z
|
||||
sh S
|
||||
zh Z
|
||||
f f
|
||||
v v
|
||||
th T
|
||||
dh D
|
||||
ch tS
|
||||
jh dZ
|
||||
h h
|
||||
m m
|
||||
n n
|
||||
ng N
|
||||
l l
|
||||
ll 5
|
||||
y j
|
||||
r r
|
||||
w w
|
||||
# _
|
@ -1,5 +0,0 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
use Rsynth::Elements;
|
||||
read_elements();
|
||||
write_elements(\*STDOUT);
|
@ -1,5 +0,0 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
use Rsynth::Elements;
|
||||
read_elements();
|
||||
write_features(\*STDOUT);
|
@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
/home/nick/speech/festival/bin/festival --tts "$@"
|
@ -1,214 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
#include <config.h>
|
||||
/* $Id: getarg.c,v 1.1 2006-06-11 07:13:25 urchlay Exp $
|
||||
*/
|
||||
char *getarg_id = "$Id: getarg.c,v 1.1 2006-06-11 07:13:25 urchlay Exp $";
|
||||
#if defined(USE_PROTOTYPES) ? USE_PROTOTYPES : defined(__STDC__)
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <useconfig.h>
|
||||
#include "getargs.h"
|
||||
|
||||
int help_only = 0;
|
||||
|
||||
/*
|
||||
Usage is like :
|
||||
|
||||
argc = getargs("Module",argc,argv,
|
||||
"r", "%d", &rate, "Integer",
|
||||
"u", "", &ufile_name, "String",
|
||||
"g", "%d", &gain, "Double",
|
||||
"a", NULL, &use_audio, "Boolean -a toggles, +a sets",
|
||||
"s", "" , &speaker, "Boolean -s clears, +s sets",
|
||||
NULL);
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#if defined(USE_PROTOTYPES) ? USE_PROTOTYPES : defined(__STDC__)
|
||||
int
|
||||
getargs(char *module,int argc, char *argv[],...)
|
||||
#else
|
||||
int
|
||||
getargs(module, argc, argv, va_alist)
|
||||
char *module;
|
||||
int argc;
|
||||
char *argv[];
|
||||
va_dcl
|
||||
#endif
|
||||
{
|
||||
va_list ap;
|
||||
int i = 0;
|
||||
int done_module = 0;
|
||||
while (i < argc)
|
||||
{
|
||||
char *s = argv[i];
|
||||
int flag = *s++;
|
||||
if (*s && (flag == '-' || flag == '+'))
|
||||
{
|
||||
int off = 1;
|
||||
while (*s)
|
||||
{
|
||||
char *a;
|
||||
int count = 0;
|
||||
#if defined(USE_PROTOTYPES) ? USE_PROTOTYPES : defined(__STDC__)
|
||||
va_start(ap, argv);
|
||||
#else
|
||||
va_start(ap);
|
||||
#endif
|
||||
while ((a = va_arg(ap, char *)))
|
||||
{
|
||||
int l = strlen(a);
|
||||
char *fmt = va_arg(ap, char *);
|
||||
void *var = va_arg(ap, void *);
|
||||
char *desc = va_arg(ap, char *);
|
||||
if (!strcmp(s,"-help"))
|
||||
{
|
||||
help_only = 1;
|
||||
if (!done_module++)
|
||||
fprintf(stderr,"%s:\n",module);
|
||||
if (fmt)
|
||||
{char *x = strchr(fmt,'%');
|
||||
if (x)
|
||||
{
|
||||
fprintf(stderr," -%s <%s> [",a,x+1);
|
||||
switch(*(x+strlen(x)-1))
|
||||
{
|
||||
case 'e':
|
||||
case 'f':
|
||||
case 'g':
|
||||
fprintf(stderr,fmt,*((double *) var));
|
||||
break;
|
||||
case 'u':
|
||||
case 'd':
|
||||
if (x[1] == 'l')
|
||||
fprintf(stderr,fmt,*((long *) var));
|
||||
else
|
||||
fprintf(stderr,fmt,*((int *) var));
|
||||
break;
|
||||
}
|
||||
fprintf(stderr,"]\t%s\n",desc);
|
||||
}
|
||||
else
|
||||
fprintf(stderr," -%s <string> [%s]\t%s\n",a,
|
||||
*((char **) var) ? *((char **) var) : "", desc);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr," [+|-]%s [%s]\t%s\n",a,
|
||||
*((int *) var) ? "yes" : "no",desc);
|
||||
}
|
||||
}
|
||||
else if (l > 1)
|
||||
{
|
||||
if (!count && !strcmp(s, a))
|
||||
{
|
||||
if (fmt)
|
||||
{
|
||||
if (i + off < argc)
|
||||
{
|
||||
char *x = argv[i + off++];
|
||||
if (strchr(fmt, '%'))
|
||||
{
|
||||
if (sscanf(x, fmt, var) != 1)
|
||||
fprintf(stderr, "%s : %s invalid after -%s\n", argv[0], x, a);
|
||||
}
|
||||
else
|
||||
*((char **) var) = x;
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "%s : no argument after -%s\n", argv[0], a);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (flag == '+')
|
||||
*((int *) var) = !0;
|
||||
else
|
||||
*((int *) var) = !*((int *) var);
|
||||
}
|
||||
/* skip to end of string */
|
||||
count++;
|
||||
s += l;
|
||||
break; /* out of va_arg loop */
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*s == *a)
|
||||
{
|
||||
if (fmt)
|
||||
{
|
||||
if (i + off < argc)
|
||||
{
|
||||
char *x = argv[i + off++];
|
||||
if (strchr(fmt, '%'))
|
||||
{
|
||||
if (sscanf(x, fmt, var) != 1)
|
||||
fprintf(stderr, "%s : %s invalid after -%s\n", argv[0], x, a);
|
||||
}
|
||||
else
|
||||
*((char **) var) = x;
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "%s : no argument after -%s\n", argv[0], a);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (fmt || flag == '+')
|
||||
*((int *) var) = (flag == '+');
|
||||
else
|
||||
*((int *) var) = !*((int *) var);
|
||||
}
|
||||
count++;
|
||||
s++;
|
||||
break; /* out of va_arg loop */
|
||||
}
|
||||
}
|
||||
}
|
||||
va_end(ap);
|
||||
if (!count)
|
||||
{
|
||||
off = 0;
|
||||
break; /* Out of s loop */
|
||||
}
|
||||
}
|
||||
if (off != 0)
|
||||
{
|
||||
int j;
|
||||
argc -= off;
|
||||
for (j = i; j <= argc; j++)
|
||||
argv[j] = argv[j + off];
|
||||
}
|
||||
else
|
||||
i++;
|
||||
}
|
||||
else
|
||||
i++;
|
||||
}
|
||||
if (help_only && done_module)
|
||||
fprintf(stderr,"\n");
|
||||
return argc;
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
/* $Id: getargs.h,v 1.1 2006-06-11 07:13:25 urchlay Exp $
|
||||
/* $Id: getargs.h,v 1.2 2006-06-11 21:49:07 stephena Exp $
|
||||
*/
|
||||
#ifndef GETARGS_H
|
||||
#define GETARGS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
extern int getargs(char *module,int argc,char *argv[],...);
|
||||
extern int help_only;
|
||||
|
||||
|
@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
if test $# -gt 0; then
|
||||
dir=$1;
|
||||
else
|
||||
dir=.
|
||||
fi
|
||||
grep 'Revision:' ${dir}/Revision.c | sed 's/^.*Revision: *\([0-9.]*\).*$/\1/'
|
||||
|
@ -1,109 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
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
|
||||
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include "darray.h"
|
||||
#include "charset.h"
|
||||
#include "text.h"
|
||||
#include "phones.h"
|
||||
#include "lang.h"
|
||||
#include "english.h"
|
||||
#include "say.h"
|
||||
|
||||
|
||||
lang_t *lang = &English;
|
||||
|
||||
unsigned
|
||||
xlate_string(char *string, darray_ptr phone)
|
||||
{
|
||||
abort(); /* just a stub */
|
||||
}
|
||||
|
||||
int main(int argc,char *argv[])
|
||||
{
|
||||
darray_t phone;
|
||||
darray_init(&phone, sizeof(char), 128);
|
||||
init_locale();
|
||||
if (argc > 1)
|
||||
{
|
||||
rule_debug = 1;
|
||||
while (--argc)
|
||||
{
|
||||
char *s = *++argv;
|
||||
NRL(s,strlen(s),&phone);
|
||||
darray_append(&phone,0);
|
||||
printf("%s [%s]\n",s,(char *) darray_find(&phone,0));
|
||||
phone.items = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
char buf[1024];
|
||||
unsigned char *s;
|
||||
unsigned total = 0;
|
||||
unsigned right = 0;
|
||||
while ((s = (unsigned char *) fgets(buf,sizeof(buf),stdin)))
|
||||
{
|
||||
while (*s && isspace(*s)) s++;
|
||||
if (*s)
|
||||
{
|
||||
unsigned char *e = s;
|
||||
unsigned char *p;
|
||||
while (*e && !isspace(*e)) e++;
|
||||
NRL(s,(e-s),&phone);
|
||||
darray_append(&phone,0);
|
||||
p = e;
|
||||
while (*p && isspace(*p)) p++;
|
||||
if (*p)
|
||||
{
|
||||
char *q = p;
|
||||
total++;
|
||||
while (*q && !isspace(*q)) q++;
|
||||
*q++ = ' ';
|
||||
*q = '\0';
|
||||
if (strcmp(p,darray_find(&phone,0)) != 0)
|
||||
{
|
||||
printf("%.*s",(e-s),s);
|
||||
printf(" expected /%s/, got /%s/\n",p,(char *) darray_find(&phone,0));
|
||||
}
|
||||
else
|
||||
{
|
||||
right++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("%.*s",(e-s),s);
|
||||
printf(" got /%s/\n",(char *) darray_find(&phone,0));
|
||||
fflush(stdout);
|
||||
}
|
||||
phone.items = 0;
|
||||
}
|
||||
}
|
||||
if (total)
|
||||
{
|
||||
fprintf(stderr,"%.3g%% correct\n",right*100.0/total);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,209 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2003 Nick Ing-Simmons.
|
||||
All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
|
||||
#include "useconfig.h"
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/signal.h>
|
||||
#include <unistd.h>
|
||||
|
||||
// #define ALSA_PCM_OLD_HW_PARAMS_API
|
||||
|
||||
#include <alsa/asoundlib.h>
|
||||
#include "l2u.h"
|
||||
|
||||
char *pcm_name = "default";
|
||||
|
||||
#include "getargs.h"
|
||||
#include "hplay.h"
|
||||
|
||||
#define SAMP_RATE 11025
|
||||
long samp_rate = SAMP_RATE;
|
||||
|
||||
/* Audio Parameters */
|
||||
|
||||
static int linear_fd = -1;
|
||||
|
||||
char *prog = "hplay";
|
||||
static snd_pcm_t *pcm;
|
||||
static snd_pcm_hw_params_t *hwparams;
|
||||
static snd_pcm_uframes_t chunk;
|
||||
|
||||
static int
|
||||
audio_open(void)
|
||||
{
|
||||
int err;
|
||||
if ((err = snd_pcm_open(&pcm,pcm_name,SND_PCM_STREAM_PLAYBACK,0)) < 0)
|
||||
{
|
||||
fprintf(stderr,"Cannot open %s:%s",pcm_name,snd_strerror(err));
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int want = samp_rate;
|
||||
int dir = 0;
|
||||
snd_pcm_hw_params_malloc(&hwparams);
|
||||
snd_pcm_hw_params_any(pcm,hwparams);
|
||||
/* Check capabilities */
|
||||
if ((err = snd_pcm_hw_params_set_access(pcm, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0)
|
||||
{
|
||||
fprintf(stderr,"Cannot set access %s:%s",pcm_name,snd_strerror(err));
|
||||
return 0;
|
||||
}
|
||||
/* Set sample format */
|
||||
if ((err=snd_pcm_hw_params_set_format(pcm, hwparams, SND_PCM_FORMAT_S16)) < 0)
|
||||
{
|
||||
fprintf(stderr,"Error setting format %s:%s",pcm_name,snd_strerror(err));
|
||||
return(0);
|
||||
}
|
||||
#ifdef ALSA_PCM_OLD_HW_PARAMS_API
|
||||
want = snd_pcm_hw_params_set_rate_near(pcm, hwparams, want, &dir);
|
||||
#else
|
||||
err = snd_pcm_hw_params_set_rate_near(pcm, hwparams, &want, &dir);
|
||||
#endif
|
||||
if (dir != 0 || want != samp_rate)
|
||||
{
|
||||
fprintf(stderr,"Wanted %ldHz, got %uHz (%d)",samp_rate,want,dir);
|
||||
samp_rate = want;
|
||||
}
|
||||
if ((err=snd_pcm_hw_params_set_channels(pcm, hwparams, 1)) < 0)
|
||||
{
|
||||
fprintf(stderr,"Error setting channels %s:%s",pcm_name,snd_strerror(err));
|
||||
return(0);
|
||||
}
|
||||
/* Apply HW parameter settings to */
|
||||
/* PCM device and prepare device */
|
||||
if ((err=snd_pcm_hw_params(pcm, hwparams)) < 0)
|
||||
{
|
||||
fprintf(stderr,"Error setting parameters %s:%s",pcm_name,snd_strerror(err));
|
||||
return(0);
|
||||
}
|
||||
#ifdef ALSA_PCM_OLD_HW_PARAMS_API
|
||||
chunk = snd_pcm_hw_params_get_buffer_size (hwparams);
|
||||
#else
|
||||
snd_pcm_hw_params_get_buffer_size (hwparams,&chunk);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
audio_init(int argc, char *argv[])
|
||||
{
|
||||
int rate_set = 0;
|
||||
int use_audio = 1;
|
||||
|
||||
prog = argv[0];
|
||||
|
||||
argc = getargs("ALSA Sound driver",argc, argv,
|
||||
"r", "%d", &rate_set, "Sample rate",
|
||||
"A", "default", &pcm_name, "Device",
|
||||
"a", NULL, &use_audio, "Audio enable",
|
||||
NULL);
|
||||
|
||||
if (help_only)
|
||||
return argc;
|
||||
|
||||
if (rate_set)
|
||||
samp_rate = rate_set;
|
||||
|
||||
if (use_audio)
|
||||
audio_open();
|
||||
|
||||
return argc;
|
||||
}
|
||||
|
||||
void
|
||||
audio_term(void)
|
||||
{
|
||||
/* Finish linear file */
|
||||
if (linear_fd >= 0)
|
||||
{
|
||||
ftruncate(linear_fd, lseek(linear_fd, 0L, SEEK_CUR));
|
||||
close(linear_fd);
|
||||
linear_fd = -1;
|
||||
}
|
||||
|
||||
/* Close audio system */
|
||||
if (pcm)
|
||||
{
|
||||
int err = snd_pcm_drain(pcm);
|
||||
if (err < 0)
|
||||
{
|
||||
fprintf(stderr,"%s:%s\n",pcm_name,snd_strerror(err));
|
||||
}
|
||||
if ((err = snd_pcm_close(pcm)) < 0)
|
||||
{
|
||||
fprintf(stderr,"%s:%s\n",pcm_name,snd_strerror(err));
|
||||
}
|
||||
pcm = 0;
|
||||
}
|
||||
|
||||
if (hwparams)
|
||||
{
|
||||
snd_pcm_hw_params_free(hwparams);
|
||||
hwparams = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
audio_play(int n, short *data)
|
||||
{
|
||||
if (n > 0)
|
||||
{
|
||||
if (linear_fd >= 0)
|
||||
{
|
||||
if (write(linear_fd, data, n) != n)
|
||||
perror("write");
|
||||
}
|
||||
if (pcm)
|
||||
{
|
||||
snd_pcm_sframes_t ret;
|
||||
while (n > 0)
|
||||
{
|
||||
size_t amount = ((size_t) n > chunk) ? chunk : (size_t) n;
|
||||
while ((ret = snd_pcm_writei(pcm, data, amount)) < 0)
|
||||
{
|
||||
/* Pipe may well drain - but harmless as we write
|
||||
whole words to the pipe
|
||||
*/
|
||||
if (ret != -EPIPE)
|
||||
{
|
||||
fprintf(stderr,"%s:%s\n",pcm_name,snd_strerror(ret));
|
||||
}
|
||||
snd_pcm_prepare(pcm);
|
||||
}
|
||||
n -= ret;
|
||||
data += ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -17,11 +17,23 @@
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
/* $Id: hplay.h,v 1.1 2006-06-11 07:13:25 urchlay Exp $
|
||||
/* $Id: hplay.h,v 1.2 2006-06-11 21:49:08 stephena Exp $
|
||||
*/
|
||||
#ifndef __HPLAY_H
|
||||
#define __HPLAY_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern char *program;
|
||||
extern long samp_rate;
|
||||
extern int audio_init(int argc, char *argv[]);
|
||||
extern void audio_term(void);
|
||||
extern void audio_play(int n, short *data);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,10 +0,0 @@
|
||||
This is R-synth - a formant synthesizer.
|
||||
R-synth takes a list of phonemes
|
||||
described in John Well's SAMPA encoding of the IPA,
|
||||
and generates speech using a digital model of the vocal tract.
|
||||
|
||||
The festival speech synthesis system, can use r-synth to generate a
|
||||
voice to read conventional english text.
|
||||
Prosodic information is generated by festival and fed to r-synth.
|
||||
|
||||
|
@ -1,233 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5; it is not part of GNU.
|
||||
#
|
||||
# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
#
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
tranformbasename=""
|
||||
transform_arg=""
|
||||
instcmd="$mvprog"
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
dst=""
|
||||
dir_arg=""
|
||||
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-c) instcmd="$cpprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd="$stripprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
*) if [ x"$src" = x ]
|
||||
then
|
||||
src=$1
|
||||
else
|
||||
# this colon is to work around a 386BSD /bin/sh bug
|
||||
:
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ x"$src" = x ]
|
||||
then
|
||||
echo "install: no input file specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]; then
|
||||
dst=$src
|
||||
src=""
|
||||
|
||||
if [ -d $dst ]; then
|
||||
instcmd=:
|
||||
else
|
||||
instcmd=mkdir
|
||||
fi
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
|
||||
if [ -f $src -o -d $src ]
|
||||
then
|
||||
true
|
||||
else
|
||||
echo "install: $src does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d $dst ]
|
||||
then
|
||||
dst="$dst"/`basename $src`
|
||||
else
|
||||
true
|
||||
fi
|
||||
fi
|
||||
|
||||
## this sed command emulates the dirname command
|
||||
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-${defaultIFS}}"
|
||||
|
||||
oIFS="${IFS}"
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS="${oIFS}"
|
||||
|
||||
pathcomp=''
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
pathcomp="${pathcomp}${1}"
|
||||
shift
|
||||
|
||||
if [ ! -d "${pathcomp}" ] ;
|
||||
then
|
||||
$mkdirprog "${pathcomp}"
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
pathcomp="${pathcomp}/"
|
||||
done
|
||||
|
||||
if [ x"$dir_arg" != x ]
|
||||
then
|
||||
$doit $instcmd $dst &&
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||
else
|
||||
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
|
||||
if [ x"$transformarg" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
dstfile=`basename $dst $transformbasename |
|
||||
sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename
|
||||
|
||||
if [ x"$dstfile" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# Make a temp file name in the proper directory.
|
||||
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $instcmd $src $dsttmp &&
|
||||
|
||||
trap "rm -f ${dsttmp}" 0 &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||
|
||||
fi &&
|
||||
|
||||
|
||||
exit 0
|
@ -1,571 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 1994 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
short _u2l[] =
|
||||
{
|
||||
-32256, -31228, -30200, -29172, -28143, -27115, -26087, -25059,
|
||||
-24031, -23002, -21974, -20946, -19918, -18889, -17861, -16833,
|
||||
-16062, -15548, -15033, -14519, -14005, -13491, -12977, -12463,
|
||||
-11949, -11435, -10920, -10406, -9892, -9378, -8864, -8350,
|
||||
-7964, -7707, -7450, -7193, -6936, -6679, -6422, -6165,
|
||||
-5908, -5651, -5394, -5137, -4880, -4623, -4365, -4108,
|
||||
-3916, -3787, -3659, -3530, -3402, -3273, -3144, -3016,
|
||||
-2887, -2759, -2630, -2502, -2373, -2245, -2116, -1988,
|
||||
-1891, -1827, -1763, -1698, -1634, -1570, -1506, -1441,
|
||||
-1377, -1313, -1249, -1184, -1120, -1056, -992, -927,
|
||||
-879, -847, -815, -783, -751, -718, -686, -654,
|
||||
-622, -590, -558, -526, -494, -461, -429, -397,
|
||||
-373, -357, -341, -325, -309, -293, -277, -261,
|
||||
-245, -228, -212, -196, -180, -164, -148, -132,
|
||||
-120, -112, -104, -96, -88, -80, -72, -64,
|
||||
-56, -48, -40, -32, -24, -16, -8, 0,
|
||||
32256, 31228, 30200, 29172, 28143, 27115, 26087, 25059,
|
||||
24031, 23002, 21974, 20946, 19918, 18889, 17861, 16833,
|
||||
16062, 15548, 15033, 14519, 14005, 13491, 12977, 12463,
|
||||
11949, 11435, 10920, 10406, 9892, 9378, 8864, 8350,
|
||||
7964, 7707, 7450, 7193, 6936, 6679, 6422, 6165,
|
||||
5908, 5651, 5394, 5137, 4880, 4623, 4365, 4108,
|
||||
3916, 3787, 3659, 3530, 3402, 3273, 3144, 3016,
|
||||
2887, 2759, 2630, 2502, 2373, 2245, 2116, 1988,
|
||||
1891, 1827, 1763, 1698, 1634, 1570, 1506, 1441,
|
||||
1377, 1313, 1249, 1184, 1120, 1056, 992, 927,
|
||||
879, 847, 815, 783, 751, 718, 686, 654,
|
||||
622, 590, 558, 526, 494, 461, 429, 397,
|
||||
373, 357, 341, 325, 309, 293, 277, 261,
|
||||
245, 228, 212, 196, 180, 164, 148, 132,
|
||||
120, 112, 104, 96, 88, 80, 72, 64,
|
||||
56, 48, 40, 32, 24, 16, 8, 0
|
||||
};
|
||||
|
||||
static unsigned char _l2u_[] =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
|
||||
0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
|
||||
0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
|
||||
0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
|
||||
0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
|
||||
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
|
||||
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
|
||||
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
|
||||
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
|
||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
|
||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
|
||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
|
||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
|
||||
0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
|
||||
0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
|
||||
0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
|
||||
0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
|
||||
0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
|
||||
0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
|
||||
0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
|
||||
0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
|
||||
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
|
||||
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
|
||||
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
|
||||
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
|
||||
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
|
||||
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
|
||||
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
|
||||
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x19,
|
||||
0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
|
||||
0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
|
||||
0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
|
||||
0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
|
||||
0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
|
||||
0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
|
||||
0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
|
||||
0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
|
||||
0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
|
||||
0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
|
||||
0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
|
||||
0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
|
||||
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
|
||||
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
|
||||
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
|
||||
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1D, 0x1D,
|
||||
0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
|
||||
0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
|
||||
0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
|
||||
0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1E,
|
||||
0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
|
||||
0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
|
||||
0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
|
||||
0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x1F,
|
||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
|
||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
|
||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
|
||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21,
|
||||
0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
|
||||
0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x22,
|
||||
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
|
||||
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23,
|
||||
0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
|
||||
0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24,
|
||||
0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
|
||||
0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25,
|
||||
0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
|
||||
0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x26, 0x26, 0x26,
|
||||
0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
|
||||
0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x27, 0x27, 0x27,
|
||||
0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
|
||||
0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x28, 0x28,
|
||||
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
|
||||
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29,
|
||||
0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
|
||||
0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2A, 0x2A,
|
||||
0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
|
||||
0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2B, 0x2B,
|
||||
0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B,
|
||||
0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2C, 0x2C,
|
||||
0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
|
||||
0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2D, 0x2D,
|
||||
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
|
||||
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2E, 0x2E,
|
||||
0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
|
||||
0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2F, 0x2F,
|
||||
0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F,
|
||||
0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x30,
|
||||
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31,
|
||||
0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x32,
|
||||
0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x33,
|
||||
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x34,
|
||||
0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x35,
|
||||
0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x36,
|
||||
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37,
|
||||
0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39,
|
||||
0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3A,
|
||||
0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3B,
|
||||
0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3C,
|
||||
0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3D,
|
||||
0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D,
|
||||
0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E,
|
||||
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
|
||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
|
||||
0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
|
||||
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
|
||||
0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47,
|
||||
0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
|
||||
0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
|
||||
0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D,
|
||||
0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F,
|
||||
0x50, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, 0x51, 0x52, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53, 0x53,
|
||||
0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x56, 0x56, 0x56, 0x56, 0x57, 0x57, 0x57, 0x57,
|
||||
0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x59, 0x5A, 0x5A, 0x5A, 0x5A, 0x5B, 0x5B, 0x5B, 0x5B,
|
||||
0x5C, 0x5C, 0x5C, 0x5C, 0x5D, 0x5D, 0x5D, 0x5D, 0x5E, 0x5E, 0x5E, 0x5E, 0x5F, 0x5F, 0x5F, 0x5F,
|
||||
0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67,
|
||||
0x68, 0x68, 0x68, 0x69, 0x69, 0x6A, 0x6A, 0x6B, 0x6B, 0x6C, 0x6C, 0x6D, 0x6D, 0x6E, 0x6E, 0x6F,
|
||||
0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E,
|
||||
0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0,
|
||||
0xEF, 0xEF, 0xEE, 0xEE, 0xED, 0xED, 0xEC, 0xEC, 0xEB, 0xEB, 0xEA, 0xEA, 0xE9, 0xE9, 0xE8, 0xE8,
|
||||
0xE7, 0xE7, 0xE6, 0xE6, 0xE5, 0xE5, 0xE4, 0xE4, 0xE3, 0xE3, 0xE2, 0xE2, 0xE1, 0xE1, 0xE0, 0xE0,
|
||||
0xDF, 0xDF, 0xDF, 0xDF, 0xDE, 0xDE, 0xDE, 0xDE, 0xDD, 0xDD, 0xDD, 0xDD, 0xDC, 0xDC, 0xDC, 0xDC,
|
||||
0xDB, 0xDB, 0xDB, 0xDB, 0xDA, 0xDA, 0xDA, 0xDA, 0xD9, 0xD9, 0xD9, 0xD9, 0xD8, 0xD8, 0xD8, 0xD8,
|
||||
0xD7, 0xD7, 0xD7, 0xD7, 0xD6, 0xD6, 0xD6, 0xD6, 0xD5, 0xD5, 0xD5, 0xD5, 0xD4, 0xD4, 0xD4, 0xD4,
|
||||
0xD3, 0xD3, 0xD3, 0xD3, 0xD2, 0xD2, 0xD2, 0xD2, 0xD1, 0xD1, 0xD1, 0xD1, 0xD0, 0xD0, 0xD0, 0xD0,
|
||||
0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE,
|
||||
0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
|
||||
0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA,
|
||||
0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8,
|
||||
0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
|
||||
0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4,
|
||||
0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2,
|
||||
0xC2, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
|
||||
0xC0, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,
|
||||
0xBF, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE,
|
||||
0xBE, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD,
|
||||
0xBD, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC,
|
||||
0xBC, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
|
||||
0xBB, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA,
|
||||
0xBA, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9,
|
||||
0xB9, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8,
|
||||
0xB8, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7,
|
||||
0xB7, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
|
||||
0xB6, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4,
|
||||
0xB4, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3,
|
||||
0xB3, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2,
|
||||
0xB2, 0xB2, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1,
|
||||
0xB1, 0xB1, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0,
|
||||
0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF,
|
||||
0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF,
|
||||
0xAF, 0xAF, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
|
||||
0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
|
||||
0xAE, 0xAE, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
|
||||
0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
|
||||
0xAD, 0xAD, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
|
||||
0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
|
||||
0xAC, 0xAC, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB,
|
||||
0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB,
|
||||
0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9,
|
||||
0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9,
|
||||
0xA9, 0xA9, 0xA9, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8,
|
||||
0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8,
|
||||
0xA8, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7,
|
||||
0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7,
|
||||
0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
|
||||
0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
|
||||
0xA6, 0xA6, 0xA6, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
|
||||
0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
|
||||
0xA5, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
|
||||
0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
|
||||
0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
|
||||
0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
|
||||
0xA3, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2,
|
||||
0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2,
|
||||
0xA2, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
|
||||
0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
|
||||
0xA1, 0xA1, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0,
|
||||
0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0,
|
||||
0xA0, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
|
||||
0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
|
||||
0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
|
||||
0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
|
||||
0x9F, 0x9F, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
|
||||
0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
|
||||
0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
|
||||
0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
|
||||
0x9E, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
|
||||
0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
|
||||
0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
|
||||
0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
|
||||
0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
|
||||
0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
|
||||
0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
|
||||
0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
|
||||
0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
|
||||
0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
|
||||
0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
|
||||
0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
|
||||
0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
|
||||
0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
|
||||
0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
|
||||
0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
|
||||
0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
|
||||
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
|
||||
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
|
||||
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
|
||||
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
|
||||
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
|
||||
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
|
||||
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
|
||||
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
|
||||
0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
|
||||
0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
|
||||
0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
|
||||
0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
|
||||
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
|
||||
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
|
||||
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
|
||||
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
|
||||
0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
|
||||
0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
|
||||
0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
|
||||
0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
|
||||
0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
|
||||
0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
|
||||
0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
|
||||
0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
|
||||
0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
|
||||
0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
|
||||
0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
|
||||
0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
|
||||
0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
|
||||
0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
|
||||
0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
|
||||
0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
|
||||
};
|
||||
unsigned char *_l2u = _l2u_ + 4096;
|
@ -1,5 +0,0 @@
|
||||
extern short _u2l[]; /* 8-bit u-law to 16-bit PCM */
|
||||
extern unsigned char *_l2u; /* 13-bit PCM to 8-bit u-law */
|
||||
#define ulaw2short(X) (_u2l[(unsigned char) (X)])
|
||||
#define short2ulaw(X) (_l2u[((short)(X)) >> 3])
|
||||
|
@ -1,5 +1,10 @@
|
||||
#ifndef LANG_H
|
||||
#define LANG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "darray.h"
|
||||
|
||||
extern char **dialect;
|
||||
@ -28,7 +33,14 @@ typedef struct lang_s
|
||||
|
||||
extern unsigned char *dict_find(const char *s, unsigned n);
|
||||
|
||||
extern lang_t *lang;
|
||||
/* FIXME - the following was the original code
|
||||
I guess it needs to be defined in SpeakJet ??
|
||||
For now, it's defined in english.h
|
||||
extern lang_t *lang;
|
||||
*/
|
||||
static lang_t *lang = 0;
|
||||
|
||||
|
||||
#define isvowel(c,m) (*lang->vowel)(c,m)
|
||||
#define isconsonant(c) (*lang->consonant)(c)
|
||||
#define xlate_ordinal(v,p) (*lang->ordinal)(v,p)
|
||||
@ -36,4 +48,8 @@ extern lang_t *lang;
|
||||
#define dict_find(s,n) ((lang->lookup) ? (*lang->lookup)(s,n) : 0)
|
||||
#define have_dict (lang->lookup != 0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* LANG_H */
|
||||
|
@ -1,24 +0,0 @@
|
||||
#!/usr/local/bin/new/perl -w
|
||||
|
||||
use DB_File;
|
||||
use Fcntl;
|
||||
use strict;
|
||||
|
||||
my $dict = shift;
|
||||
|
||||
die "No $dict" unless -r $dict;
|
||||
|
||||
my %dict;
|
||||
|
||||
my $h = tie %dict, 'DB_File', $dict, O_RDONLY, 0644, $DB_BTREE;
|
||||
$h = tie %dict, 'DB_File', $dict, O_RDONLY, 0644, $DB_HASH unless $h;
|
||||
|
||||
die "Cannot tie $dict:$!" unless $h;
|
||||
|
||||
|
||||
while (my ($key,$val) = each %dict)
|
||||
{
|
||||
print "$key\n";
|
||||
}
|
||||
|
||||
untie %dict;
|
@ -1,14 +0,0 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
|
||||
use GDBM_File;
|
||||
|
||||
$dict = shift;
|
||||
|
||||
tie( %dict, 'GDBM_File', $dict, &GDBM_READER, 0644) || die "Cannot tie $dict:$!";
|
||||
|
||||
while (($key,$val) = each %dict)
|
||||
{
|
||||
print "$key\n";
|
||||
}
|
||||
|
||||
untie %dict;
|
@ -1,5 +0,0 @@
|
||||
Mbrola was developed by Thierry Dutoit.
|
||||
It is a speech synthesizer based on the concatenation of diphones.
|
||||
It takes a list of phonemes as input, together with prosodic
|
||||
information, and produces speech at the sampling frequency of the
|
||||
diphone database.
|
@ -1,174 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
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
|
||||
|
||||
*/
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "useconfig.h"
|
||||
#include "trie.h"
|
||||
#include "darray.h"
|
||||
#include "phones.h"
|
||||
#include "charset.h" /* national differences ,jms */
|
||||
#include "dbif.h"
|
||||
|
||||
trie_ptr phones;
|
||||
|
||||
static void enter_phones(void);
|
||||
static void
|
||||
enter_phones(void)
|
||||
{
|
||||
int i;
|
||||
char *s;
|
||||
for (i = 1; (s = ph_name[i]); i++)
|
||||
trie_insert(&phones, s, (void *) i);
|
||||
}
|
||||
|
||||
|
||||
static inline int
|
||||
Delete(unsigned char *p)
|
||||
{
|
||||
int ch = *p;
|
||||
while (*p)
|
||||
{
|
||||
*p = p[1];
|
||||
p++;
|
||||
}
|
||||
return ch;
|
||||
}
|
||||
|
||||
static void enter_words(DB_HANDLE db, FILE * f)
|
||||
{
|
||||
char buf[4096];
|
||||
unsigned words = 0;
|
||||
while (fgets(buf, sizeof(buf), f))
|
||||
{
|
||||
char *s = buf;
|
||||
char *h = strchr(s, '#');
|
||||
if (h)
|
||||
*h = '\0';
|
||||
while (isspace((unsigned char)*s))
|
||||
s++;
|
||||
if (*s)
|
||||
{
|
||||
unsigned char *p = (unsigned char *) s;
|
||||
while (!isspace(*p))
|
||||
{
|
||||
if (*p == '"' || *p == '~' || *p == '<')
|
||||
{
|
||||
unsigned char *x = p;
|
||||
*x = accent(x[0], x[1]);
|
||||
x++;
|
||||
strcpy((char *)x,(char *)x+1);
|
||||
}
|
||||
else if (*p == '\\')
|
||||
{
|
||||
unsigned char *x = p;
|
||||
*x = accent(x[1], x[2]);
|
||||
x++;
|
||||
strcpy((char *) x,(char *)x+2);
|
||||
}
|
||||
if (isupper(*p))
|
||||
*p = tolower(*p);
|
||||
else if (!isalpha(*p) && *p != '\'' && *p != '-' && *p != '_' && *p != '.')
|
||||
break;
|
||||
p++;
|
||||
}
|
||||
if (isspace(*p))
|
||||
{
|
||||
char codes[4096];
|
||||
char *d = codes;
|
||||
int ok = 1;
|
||||
int stress = 0;
|
||||
DATUM key;
|
||||
DATUM_SET(key, s, (char *) p - s);
|
||||
if (++words % 10000 == 0)
|
||||
{
|
||||
printf("%d %.*s\n",words, (int) DATUM_SIZE(key), (char *) DATUM_DATA(key));
|
||||
}
|
||||
while (*p && ok)
|
||||
{
|
||||
unsigned code;
|
||||
while (isspace(*p))
|
||||
p++;
|
||||
if (*p)
|
||||
{
|
||||
unsigned char *e = p;
|
||||
while (isalpha(*e) || *e == '1' || *e == '2')
|
||||
{
|
||||
if (*e == '1' || *e == '2')
|
||||
stress = 1;
|
||||
else if (islower(*e))
|
||||
*e = toupper(*e);
|
||||
e++;
|
||||
}
|
||||
if (*e == '0')
|
||||
*e++ = ' ';
|
||||
if (e > p && (code = (unsigned) trie_lookup(&phones, (char **) &p)))
|
||||
*d++ = code;
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Bad code %.*s>%s", (int)((char *) p - s), s, p);
|
||||
ok = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ok)
|
||||
{
|
||||
DATUM data;
|
||||
DATUM_SET(data, codes, d - codes);
|
||||
DB_STORE(db, key, data);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*p != '(')
|
||||
fprintf(stderr, "Ignore (%c) %s", *p, s);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[], char *env[]);
|
||||
|
||||
int
|
||||
main(int argc, char **argv, char **envp)
|
||||
{
|
||||
init_locale();
|
||||
if (argc == 3)
|
||||
{
|
||||
FILE *f = fopen(argv[1], "r");
|
||||
if (f)
|
||||
{
|
||||
DB_HANDLE db;
|
||||
DB_OPEN_WRITE(db,argv[2]);
|
||||
if (db)
|
||||
{
|
||||
enter_phones();
|
||||
enter_words(db, f);
|
||||
DB_CLOSE(db);
|
||||
}
|
||||
else
|
||||
perror(argv[2]);
|
||||
fclose(f);
|
||||
}
|
||||
else
|
||||
perror(argv[1]);
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -1,150 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 1998,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "useconfig.h"
|
||||
#include <sys/time.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define NeedFunctionPrototypes 1
|
||||
#define NeedNestedPrototypes 1
|
||||
#endif
|
||||
|
||||
|
||||
#include <audio/audiolib.h>
|
||||
#include <audio/soundlib.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "getargs.h"
|
||||
#include "hplay.h"
|
||||
|
||||
long samp_rate = 8000;
|
||||
static int volume = 100;
|
||||
static char *audioserver = NULL;
|
||||
static AuServer *aud;
|
||||
|
||||
|
||||
static void done(AuServer * aud, AuEventHandlerRec * handler, AuEvent * ev, AuPointer data)
|
||||
{
|
||||
switch (ev->auany.type)
|
||||
{
|
||||
case AuEventTypeElementNotify:
|
||||
{
|
||||
int *d = (int *) data;
|
||||
*d = (ev->auelementnotify.cur_state == AuStateStop);
|
||||
if (!*d || ev->auelementnotify.reason != AuReasonEOF)
|
||||
{
|
||||
fprintf(stderr, "curr_state=%d reason=%d\n",
|
||||
ev->auelementnotify.cur_state,
|
||||
ev->auelementnotify.reason);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case AuEventTypeMonitorNotify:
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "type=%d serial=%ld time=%ld id=%ld\n",
|
||||
ev->auany.type, ev->auany.serial, ev->auany.time, ev->auany.id);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
audio_play(int n,short *data)
|
||||
{
|
||||
int endian = 1;
|
||||
#define little_endian ((*((char *)&endian) == 1))
|
||||
int priv = 0;
|
||||
AuEvent ev;
|
||||
Sound s = SoundCreate(SoundFileFormatNone, little_endian ?
|
||||
AuFormatLinearSigned16LSB : AuFormatLinearSigned16MSB,
|
||||
1, samp_rate, n, "Chit chat");
|
||||
if (aud)
|
||||
{
|
||||
#ifdef USE_ALL_ARGS
|
||||
AuStatus ret_status;
|
||||
AuFlowID flow = 0;
|
||||
int monitor = 0;
|
||||
int multiplier = 0;
|
||||
if (!AuSoundPlayFromData(aud, s, data, AuNone,
|
||||
AuFixedPointFromFraction(volume, 100),
|
||||
done, &priv,
|
||||
&flow, &multiplier,
|
||||
&monitor, &ret_status))
|
||||
#else
|
||||
if (!AuSoundPlayFromData(aud, s, data, AuNone,
|
||||
AuFixedPointFromFraction(volume, 100),
|
||||
done, &priv,
|
||||
NULL, NULL, NULL, NULL))
|
||||
#endif
|
||||
perror("problems playing data");
|
||||
else
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
AuNextEvent(aud, AuTrue, &ev);
|
||||
AuDispatchEvent(aud, &ev);
|
||||
if (priv)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
SoundDestroy(s);
|
||||
}
|
||||
|
||||
void
|
||||
audio_term(void)
|
||||
{
|
||||
if (aud)
|
||||
{
|
||||
AuFlush(aud);
|
||||
AuCloseServer(aud);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
audio_init(int argc,char *argv[])
|
||||
{
|
||||
int rate_set = samp_rate;
|
||||
int vol = 0;
|
||||
|
||||
argc = getargs("Nas",argc, argv,
|
||||
"r", "%d", &rate_set, "Sample rate Hz",
|
||||
"V", "%d", &vol, "Volume 0 .. 1.0",
|
||||
"a", "", &audioserver,"Name of server",
|
||||
NULL);
|
||||
if (help_only)
|
||||
return argc;
|
||||
|
||||
if ((aud = AuOpenServer(audioserver, 0, NULL, 0, NULL, NULL)) == (AuServer *) 0)
|
||||
perror(audioserver);
|
||||
|
||||
if (rate_set && rate_set != samp_rate)
|
||||
samp_rate = rate_set;
|
||||
|
||||
if (vol)
|
||||
volume = vol;
|
||||
|
||||
return argc;
|
||||
}
|
@ -1,3 +1,6 @@
|
||||
#ifndef __PHFEAT_H
|
||||
#define __PHFEAT_H
|
||||
|
||||
#define unr 0x00000000
|
||||
#define rnd 0x00000001
|
||||
#define low 0x00000002
|
||||
@ -31,3 +34,5 @@
|
||||
#define gld 0x20000000
|
||||
#define lbv 0x40000000
|
||||
#define pal 0x80000000
|
||||
|
||||
#endif
|
||||
|
@ -1,3 +1,10 @@
|
||||
#ifndef __PHONES_H
|
||||
#define __PHONES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define PHONE(nm,st,br,am,ex) nm
|
||||
enum phone_e { SIL,
|
||||
#include "phones.def"
|
||||
@ -6,3 +13,9 @@ END };
|
||||
extern char *ph_name[];
|
||||
extern char *ph_br[];
|
||||
extern char *ph_am[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,10 +0,0 @@
|
||||
Once upon a time there were three bears, they had
|
||||
problems with nasty nasal noises until they took to drinking herbal tea.
|
||||
Simulated singing is not a sin.
|
||||
A bird in the hand is worth two in the bush.
|
||||
Hello Medi.
|
||||
Help!
|
||||
Hello Ginger!
|
||||
What do you want for supper Dudley?
|
||||
I am sorry I cannot do that Dave.
|
||||
01454 619107 This is a computer, please leave a message after the tone.
|
@ -1,111 +0,0 @@
|
||||
COMMENT("We are using COMMENT() so this file can be perl or C");
|
||||
|
||||
COMMENT("Silences");
|
||||
enter(".","END",NULL); COMMENT("This is 1st non-aware upper layer can inject");
|
||||
enter(" ","Q",NULL); COMMENT("This is 1st non-aware upper layer can inject");
|
||||
enter("_","Q",NULL); COMMENT("'mbrola' compatibility");
|
||||
enter("#","Q",NULL); COMMENT("'mbrola' compatibility");
|
||||
|
||||
COMMENT("Affricates (compounds) - put before singles to aid lookup");
|
||||
enter("tS","T","CH",NULL);
|
||||
enter("dZ","D","DY","DZ","ZH","ZH",NULL);
|
||||
|
||||
COMMENT("Plosives");
|
||||
enter("p","P","PY","PZ",NULL);
|
||||
enter("b","B","BY","BZ",NULL);
|
||||
enter("t","T","TY","TZ",NULL);
|
||||
enter("d","D","DY","DZ",NULL);
|
||||
enter("k","K","KY","KZ",NULL);
|
||||
enter("g","G","GY","GZ",NULL);
|
||||
enter("?","QQ",NULL); COMMENT("stop-ness - not quite glottal stop");
|
||||
|
||||
COMMENT("Nasals");
|
||||
enter("m","M",NULL);
|
||||
enter("n","N",NULL);
|
||||
enter("N","NG",NULL);
|
||||
|
||||
COMMENT("Trills and flaps");
|
||||
enter("4","DT",NULL);
|
||||
enter("rr","R","QQ","R",NULL);
|
||||
enter("R","RX",NULL);
|
||||
enter("`","RX",NULL); COMMENT("rhoticity diacritic - fallback");
|
||||
|
||||
COMMENT("Fricatives");
|
||||
enter("f","F",NULL);
|
||||
enter("v","V",NULL);
|
||||
enter("T","TH",NULL);
|
||||
enter("D","DH",NULL);
|
||||
enter("s","S",NULL);
|
||||
enter("z","Z",NULL);
|
||||
enter("S","SH",NULL);
|
||||
enter("Z","ZH",NULL);
|
||||
enter("x","X",NULL);
|
||||
enter("h","H",NULL);
|
||||
|
||||
COMMENT("Latterals");
|
||||
enter("l","L",NULL);
|
||||
enter("K","HL",NULL);
|
||||
enter("5","LL",NULL);
|
||||
|
||||
COMMENT("Approximants");
|
||||
enter("w","W",NULL);
|
||||
enter("j","Y",NULL);
|
||||
enter("r","R",NULL);
|
||||
|
||||
COMMENT("Dipthongs");
|
||||
enter("eI","AI","I",NULL);
|
||||
enter("aI","IE","I",NULL);
|
||||
enter("OI","OI","I",NULL);
|
||||
enter("aU","AI","OV",NULL);
|
||||
enter("@U","OA","OV",NULL);
|
||||
enter("I@","IA","IB",NULL);
|
||||
enter("e@","AIR","IB",NULL);
|
||||
enter("U@","OOR","IB",NULL);
|
||||
enter("O@","OI","IB",NULL);
|
||||
enter("oU","o","OV",NULL);
|
||||
|
||||
COMMENT("close vowels");
|
||||
enter("i","EE",NULL);
|
||||
enter("y","YY",NULL);
|
||||
enter("1","EY",NULL);
|
||||
enter("}","JU",NULL);
|
||||
enter("M","UW",NULL);
|
||||
enter("u","UU",NULL);
|
||||
|
||||
COMMENT("lax vowels");
|
||||
enter("I","I",NULL);
|
||||
enter("Y","IU",NULL);
|
||||
enter("U","OO",NULL);
|
||||
|
||||
COMMENT("close-mid vowels");
|
||||
enter("e","e",NULL);
|
||||
enter("e~","eN",NULL);
|
||||
enter("2","EU",NULL);
|
||||
enter("@\\","Ur",NULL);
|
||||
enter("8","UR",NULL);
|
||||
enter("7","UE",NULL);
|
||||
enter("o","o",NULL);
|
||||
enter("o~","oN",NULL);
|
||||
|
||||
COMMENT("schwa");
|
||||
enter("@","A",NULL);
|
||||
|
||||
COMMENT("open-mid vowels");
|
||||
enter("E","EH",NULL);
|
||||
enter("9","oe",NULL);
|
||||
enter("9~","oeN",NULL);
|
||||
enter("3","ER",NULL);
|
||||
enter("3\\","Er",NULL);
|
||||
enter("V","U",NULL);
|
||||
enter("O","AW",NULL);
|
||||
|
||||
enter("{","AA",NULL);
|
||||
enter("6","AA",NULL);
|
||||
|
||||
COMMENT("open vowels");
|
||||
enter("a", "a",NULL);
|
||||
enter("a~", "aN",NULL);
|
||||
enter("&", "OE",NULL);
|
||||
enter("A","AR",NULL);
|
||||
enter("Q","O",NULL);
|
||||
|
@ -1,6 +1,18 @@
|
||||
/* $Id: phtoelm.h,v 1.1 2006-06-11 07:13:26 urchlay Exp $
|
||||
/* $Id: phtoelm.h,v 1.2 2006-06-11 21:49:09 stephena Exp $
|
||||
*/
|
||||
#ifndef __PHTOELM_H
|
||||
#define __PHTOELM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct rsynth_s;
|
||||
extern unsigned phone_to_elm (char *s, int n, darray_ptr elm, darray_ptr f0);
|
||||
extern void say_pho(struct rsynth_s *rsynth, const char *path, int dodur,char *phoneset);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1 +1,10 @@
|
||||
extern FILE *par_file;
|
||||
#ifndef __PLOTPARM_H
|
||||
#define __PLOTPARM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern FILE *par_file;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,115 +0,0 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
use Rsynth::Elements;
|
||||
read_elements();
|
||||
|
||||
my @seq;
|
||||
sub NULL () { undef }
|
||||
|
||||
sub enter
|
||||
{
|
||||
my ($ph,@elem) = @_;
|
||||
push(@seq,[$ph,@elem]);
|
||||
}
|
||||
|
||||
sub COMMENT
|
||||
{
|
||||
my ($c) = @_;
|
||||
push(@seq,$c);
|
||||
}
|
||||
|
||||
do "phtoelm.def";
|
||||
die $@ if $@;
|
||||
|
||||
my @list = @eNames;
|
||||
while (@list)
|
||||
{
|
||||
my $e1 = shift(@list);
|
||||
foreach my $e2 (@list)
|
||||
{
|
||||
if (my $why = differ($e1,$e2))
|
||||
{
|
||||
#warn "$e1 differs from $e2 on $why\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
warn "$e1 seems to be same as $e2\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub differ
|
||||
{
|
||||
my ($e1,$e2) = @_;
|
||||
foreach my $k (qw(rk))
|
||||
{
|
||||
return $k if $elem{$e1}{$k} != $elem{$e2}{$k};
|
||||
}
|
||||
|
||||
my $f1 = join('|',grep { $_ } sort keys %{$elem{$e1}{features}});
|
||||
my $f2 = join('|',grep { $_ } sort keys %{$elem{$e2}{features}});
|
||||
|
||||
foreach my $p (@pNames)
|
||||
{
|
||||
for my $i (0..4)
|
||||
{
|
||||
if ($elem{$e1}{$p}[$i] != $elem{$e2}{$p}[$i])
|
||||
{
|
||||
if ($f1 eq $f2)
|
||||
{
|
||||
warn "$e1 and $e2 differ on $p\[$i] but share $f1\n";
|
||||
}
|
||||
return "$p\[$i\]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $k (qw(rk du ud))
|
||||
{
|
||||
if ($elem{$e1}{$k} != $elem{$e2}{$k})
|
||||
{
|
||||
warn "$e1 and $e2 seem same except for $k\n";
|
||||
return $k;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( $f1 ne $f2 )
|
||||
{
|
||||
warn "$e1 and $e2 seem same except for $f1 vs $f2\n";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
my %seen;
|
||||
my @names;
|
||||
|
||||
foreach my $p (@seq)
|
||||
{
|
||||
next unless ref($p);
|
||||
my ($ph,@elem) = @$p;
|
||||
foreach my $e (@elem)
|
||||
{
|
||||
last unless defined $e;
|
||||
die "$ph needs $e" unless exists $elem{$e};
|
||||
unless ($seen{$e}++)
|
||||
{
|
||||
# warn "Add $e for $ph\n";
|
||||
push(@names,$e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $e (@eNames)
|
||||
{
|
||||
unless (exists $seen{$e})
|
||||
{
|
||||
warn "$e not used by any phone\n";
|
||||
push(@names,$e);
|
||||
}
|
||||
}
|
||||
|
||||
@eNames = @names;
|
||||
|
||||
|
||||
write_elements("Elements.new");
|
@ -20,14 +20,12 @@
|
||||
#ifndef RSYNTH_H
|
||||
#define RSYNTH_H
|
||||
|
||||
|
||||
#include "darray.h"
|
||||
#include "trie.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "darray.h"
|
||||
#include "trie.h"
|
||||
|
||||
typedef struct
|
||||
{float stdy; /* steady state value of paramter */
|
||||
@ -72,7 +70,7 @@ typedef struct Elm_s
|
||||
char rk; /* Rank of element (obsolete) */
|
||||
char du; /* Normal duration */
|
||||
char ud; /* Unstressed duration */
|
||||
unsigned char *unicode; /* UTF-8 for phonetic symbols */
|
||||
char *unicode; /* UTF-8 for phonetic symbols */
|
||||
char *sampa; /* SAMPA string for phonetic symbol */
|
||||
long feat; /* features of the phone */
|
||||
interp_t p[nEparm]; /* Table of parameter values */
|
||||
|
@ -1,132 +0,0 @@
|
||||
<html>
|
||||
<head><title>SAMPA and Unicode IPA</title>
|
||||
<style type="text/css">
|
||||
td.unicode {font-family:"arial unicode ms","lucida sans unicode","fixed"}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>SAMPA computer readable phonetic alphabet and Unicode IPA</h1>
|
||||
|
||||
<table align=center width=90%>
|
||||
|
||||
<tr><th colspan="6">(x-)sampa Mappings with documented Unicode</i></th></tr>
|
||||
<tr><th colspan="6">Vowels</th></tr>
|
||||
|
||||
<tr><th>SAMPA</th><th CLASS='unicode'>IPA</th><th>hex</th><th>dec</th><th>Phonetic Description</th><th> Example
</th></tr>
|
||||
<tr><td>i</td><td CLASS='unicode'>i</td><td>0069</td><td>105</td><td>close front unrounded</td><td>Eng. ee</td></tr>
|
||||
<tr><td>y</td><td CLASS='unicode'>y</td><td>0079</td><td>121</td><td>close front rounded</td><td>Eng. y</td></tr>
|
||||
<tr><td>1</td><td CLASS='unicode'>ɨ</td><td>0268</td><td>616</td><td>close central unrounded</td><td>Welsh. <i>lleyn</i> </td></tr>
|
||||
<tr><td>}</td><td CLASS='unicode'>ʉ</td><td>0289</td><td>649</td><td>close central rounded</td><td>Swedish <i>sju</i>
</td></tr>
|
||||
<tr><td>M</td><td CLASS='unicode'>ɯ</td><td>026F</td><td>623</td><td>close back umrounded (Card.)</td><td></td></tr>
|
||||
<tr><td>u</td><td CLASS='unicode'>u</td><td>0075</td><td>117</td><td>close back rounded</td><td>Eng. oo</td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>I</td><td CLASS='unicode'>ɪ</td><td>026A</td><td>618</td><td>lax close front unrounded</td><td>Eng. <i>kit</i>
</td></tr>
|
||||
<tr><td>Y</td><td CLASS='unicode'>ʏ</td><td>028F</td><td>655</td><td>lax [y]</td><td>Ger. <i>hübsch</i>
</td></tr>
|
||||
<tr><td>U</td><td CLASS='unicode'>ʊ</td><td>028A</td><td>650</td><td>lax close back rounded</td><td>Eng. <i>foot</i>
</td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>e</td><td CLASS='unicode'>e</td><td>0065</td><td>101</td><td>close-mid front unrounded</td><td></td></tr>
|
||||
<tr><td>2</td><td CLASS='unicode'>ø</td><td>00F8</td><td>248</td><td>close-mid front rounded</td><td>Fr. <i>deux</i> </td></tr>
|
||||
<tr><td>@\</td><td CLASS='unicode'>ɘ</td><td>0258</td><td>600</td><td>close-mid central unrounded</td><td></td></tr>
|
||||
<tr><td>8</td><td CLASS='unicode'>ɵ</td><td>0275</td><td>629</td><td>close-mid central rounded</td><td></td></tr>
|
||||
<tr><td>7</td><td CLASS='unicode'>ɤ</td><td>0264</td><td>612</td><td>close-mid back unrounded (Card.)</td><td></td></tr>
|
||||
<tr><td>o</td><td CLASS='unicode'>o</td><td>006f</td><td>111</td><td>close-mid back rounded</td><td></td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>@</td><td CLASS='unicode'>ə</td><td>0259</td><td>601</td><td>schwa</td><td>Eng. <i>banana</i> </td></tr>
|
||||
<tr><td>@`</td><td CLASS='unicode'>ɚ</td><td>025A</td><td>602</td><td>rhotacized schwa</td><td></td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>E</td><td CLASS='unicode'>ɛ</td><td>025B</td><td>603</td><td>open-mid front unrounded (Card.3)</td><td>Fr. <i>même</i> </td></tr>
|
||||
<tr><td>9</td><td CLASS='unicode'>œ</td><td>0153</td><td>339</td><td>open-mid front rounded</td><td>Fr. <i>neuf</i> </td></tr>
|
||||
<tr><td>3</td><td CLASS='unicode'>ɜ</td><td>025C</td><td>604</td><td>long mid central</td><td>Eng. <i>n<b>ur</b>se</i>
</td></tr>
|
||||
<tr><td>3`</td><td CLASS='unicode'>ɝ</td><td>025D</td><td>605</td><td>rhotacized open-mid central</td><td>Amer. <i>b<b>ir</b>d</i></td></tr>
|
||||
<tr><td>3\</td><td CLASS='unicode'>ɞ</td><td>025E</td><td>606</td><td>open-mid central rounded</td><td></td></tr>
|
||||
<tr><td>V</td><td CLASS='unicode'>ʌ</td><td>028C</td><td>652</td><td>open-mid back unrounded</td><td>Eng. <i>strut</i>
</td></tr>
|
||||
<tr><td>O</td><td CLASS='unicode'>ɔ</td><td>0254</td><td>596</td><td>open-mid back rounded</td><td>Eng. <i>thought</i> </td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>{</td><td CLASS='unicode'>æ</td><td>00E6</td><td>230</td><td>near-open front unrounded</td><td>Eng. <i>trap</i>
</td></tr>
|
||||
<tr><td>6</td><td CLASS='unicode'>ɐ</td><td>0250</td><td>592</td><td>open schwa</td><td>Ger. <i>besser</i> </td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>a</td><td CLASS='unicode'>a</td><td>0061</td><td>97</td><td>open front unrounded</td><td>Eng. a</td></tr>
|
||||
<tr><td>&</td><td CLASS='unicode'>ɶ</td><td>0276</td><td>630</td><td>open front rounded</td><td></td></tr>
|
||||
<tr><td>A</td><td CLASS='unicode'>ɑ</td><td>0251</td><td>593</td><td>open back unrounded (Card. 5)</td><td>Eng. <i>start</i>
</td></tr>
|
||||
<tr><td>Q</td><td CLASS='unicode'>ɒ</td><td>0252</td><td>594</td><td>open back rounded</td><td>Eng. <i>l<b>o</b>t</i> </td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
|
||||
|
||||
|
||||
<tr><th colspan="6">Consonants</th></tr>
|
||||
<tr><th>SAMPA</th><th CLASS='unicode'>IPA</th><th>hex</th><th>dec</th><th>Phonetic Description</th><th> Example
</th></tr>
|
||||
<tr><td>p</td><td CLASS='unicode'>p</td><td>0070</td><td>112</td><td>voiceless bilabial plosive</td><td>Eng. p</td></tr>
|
||||
<tr><td>b</td><td CLASS='unicode'>b</td><td>0062</td><td>98</td><td>voiced blibaial plosive</td><td>Eng. b</td></tr>
|
||||
<tr><td>t</td><td CLASS='unicode'>t</td><td>0074</td><td>116</td><td>voiceless alveolar plosive</td><td>Eng. t</td></tr>
|
||||
<tr><td>d</td><td CLASS='unicode'>d</td><td>0064</td><td>100</td><td>voiced alveolar plosive</td><td>Eng. d</td></tr>
|
||||
<tr><td>t`</td><td CLASS='unicode'>ʈ</td><td>0288</td><td>648</td><td>retroflex plosive, voiceless</td><td></td></tr>
|
||||
<tr><td>d`</td><td CLASS='unicode'>ɖ</td><td>0256</td><td>598</td><td>retroflex plosive, voiced</td><td></td></tr>
|
||||
<tr><td>c</td><td CLASS='unicode'>c</td><td>0063</td><td>99</td><td>voiceless palatal plosive</td><td></td></tr>
|
||||
<tr><td>k</td><td CLASS='unicode'>k</td><td>006b</td><td>107</td><td>voiceless velar plosive</td><td>Eng. k</td></tr>
|
||||
<tr><td>g</td><td CLASS='unicode'>g</td><td>0067</td><td>103</td><td>voiced velar plosive</td><td>Eng. g</td></tr>
|
||||
<tr><td>q</td><td CLASS='unicode'>q</td><td>0071</td><td>113</td><td>voiceless uvular plosive</td><td></td></tr>
|
||||
<tr><td>?</td><td CLASS='unicode'>ʔ</td><td>0294</td><td>660</td><td>glottal stop</td><td>Ger. <i>Verein</i>, also Danish <i>stød</i>
</td></tr>
|
||||
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>m</td><td CLASS='unicode'>m</td><td>006d</td><td>109</td><td>bilabial nasal</td><td>Eng. m</td></tr>
|
||||
<tr><td>F</td><td CLASS='unicode'>ɱ</td><td>0271</td><td>625</td><td>labiodental nasal</td><td></td></tr>
|
||||
<tr><td>n</td><td CLASS='unicode'>n</td><td>006e</td><td>110</td><td>alveolar nasal</td><td>Eng. n</td></tr>
|
||||
<tr><td>n`</td><td CLASS='unicode'>ɳ</td><td>0273</td><td>627</td><td>retroflex nasal</td><td></td></tr>
|
||||
<tr><td>J</td><td CLASS='unicode'>ɲ</td><td>0272</td><td>626</td><td>palatal nasal</td><td>Sp. <i>año</i> </td></tr>
|
||||
<tr><td>N</td><td CLASS='unicode'>ŋ</td><td>014B</td><td>331</td><td>velar nasal</td><td>Eng. <i>thing</i> </td></tr>
|
||||
<tr><td>N\</td><td CLASS='unicode'>ɴ</td><td>0274</td><td>628</td><td>uvular nasal</td><td></td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>r</td><td CLASS='unicode'>r</td><td>0072</td><td>114</td><td>alveolar trill</td><td>Eng. r</td></tr>
|
||||
<tr><td>R\</td><td CLASS='unicode'>ʀ</td><td>0280</td><td>640</td><td>uvular trill</td><td></td></tr>
|
||||
<tr><td>4</td><td CLASS='unicode'>ɾ</td><td>027E</td><td>638</td><td>alveolar tap</td><td>Amer. <i>bu<b>tt</b>er</i>
</td></tr>
|
||||
<tr><td>r`</td><td CLASS='unicode'>ɽ</td><td>027D</td><td>637</td><td>retroflex flap</td><td></td></tr>
|
||||
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>p\</td><td CLASS='unicode'>ɸ</td><td>0278</td><td>632</td><td>bilabial fricative, voiceless</td><td></td></tr>
|
||||
<tr><td>B</td><td CLASS='unicode'>β</td><td>03B2</td><td>946</td><td>voiced bilabial fricative</td><td>Sp. <i>cabo</i>
</td></tr>
|
||||
<tr><td>f</td><td CLASS='unicode'>f</td><td>0066</td><td>102</td><td>voiceless labiodental fricative</td><td>Eng. f</td></tr>
|
||||
<tr><td>v</td><td CLASS='unicode'>v</td><td>0076</td><td>118</td><td>voiced labiodental fricative</td><td>Eng. v</td></tr>
|
||||
<tr><td>T</td><td CLASS='unicode'>θ</td><td>03B8</td><td>952</td><td>voiceless dental fricative</td><td>Eng. <i>thin</i>
</td></tr>
|
||||
<tr><td>D</td><td CLASS='unicode'>ð</td><td>00F0</td><td>240</td><td>voiced dental fricative</td><td>Eng. <i>then</i>
</td></tr>
|
||||
<tr><td>s</td><td CLASS='unicode'>s</td><td>0073</td><td>115</td><td>voiceless alveolar fricative</td><td>Eng. s</td></tr>
|
||||
<tr><td>z</td><td CLASS='unicode'>z</td><td>007a</td><td>122</td><td>voiced alveolar fricative</td><td>Eng. z</td></tr>
|
||||
<tr><td>S</td><td CLASS='unicode'>ʃ</td><td>0283</td><td>643</td><td>voiceless palatoalveolar fricative</td><td>Eng. <i>ship</i>
</td></tr>
|
||||
<tr><td>Z</td><td CLASS='unicode'>ʒ</td><td>0292</td><td>658</td><td>vd. palatoalveolar fric.</td><td>Eng. <i>measure</i>
</td></tr>
|
||||
<tr><td>s`</td><td CLASS='unicode'>ʂ</td><td>0282</td><td>642</td><td>retroflex fricative, voiceless</td><td></td></tr>
|
||||
<tr><td>z`</td><td CLASS='unicode'>ʐ</td><td>0290</td><td>656</td><td>retroflex fricative, voiced</td><td></td></tr>
|
||||
<tr><td>C</td><td CLASS='unicode'>ç</td><td>00E7</td><td>231</td><td>voiceless palatal fricative</td><td>Ger. <i>ich</i>
</td></tr>
|
||||
<tr><td>j\</td><td CLASS='unicode'>ʝ</td><td>029D</td><td>669</td><td>palatal fricative, voiced</td><td></td></tr>
|
||||
<tr><td>x</td><td CLASS='unicode'>x</td><td>0078</td><td>120</td><td>voiceless velar fricative</td><td>Scot. <i>lo<b>ch</b></i> </td></tr>
|
||||
<tr><td>G</td><td CLASS='unicode'>ɣ</td><td>0263</td><td>611</td><td>voiced velar fricative</td><td>Sp. <i>fuego</i>
</td></tr>
|
||||
<tr><td>X</td><td CLASS='unicode'>χ</td><td>03C7</td><td>967</td><td>uvular fricative, voiceless</td><td></td></tr>
|
||||
<tr><td>R</td><td CLASS='unicode'>ʁ</td><td>0281</td><td>641</td><td>vd. uvular fric. or trill</td><td>Fr. <i>roi</i>
</td></tr>
|
||||
<tr><td>X\</td><td CLASS='unicode'>ħ</td><td>0127</td><td>295</td><td>pharyngeal fricative, voiceless</td><td></td></tr>
|
||||
<tr><td>?\</td><td CLASS='unicode'>ʕ</td><td>0295</td><td>661</td><td>pharyngeal fricative, voiced</td><td></td></tr>
|
||||
<tr><td>h</td><td CLASS='unicode'>h</td><td>0068</td><td>104</td><td>voiceless glotal fricative</td><td>Eng. h</td></tr>
|
||||
<tr><td>h\</td><td CLASS='unicode'>ɦ</td><td>0266</td><td>614</td><td>glottal fricative, voiced</td><td></td></tr>
|
||||
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>P</td><td CLASS='unicode'>ʋ</td><td>028B</td><td>651</td><td>labiodental approximant</td><td></td></tr>
|
||||
<tr><td>j</td><td CLASS='unicode'>j</td><td>006a</td><td>106</td><td>palatal approximant</td><td>Eng. j</td></tr>
|
||||
<tr><td>w</td><td CLASS='unicode'>w</td><td>0077</td><td>119</td><td>voiced labial-velar approximant</td><td>Eng. w</td></tr>
|
||||
<tr><td>W</td><td CLASS='unicode'>ʍ</td><td>028D</td><td>653</td><td>voiceless labial-velar fricative</td><td>Scot. wh</td></tr>
|
||||
<tr><td>H</td><td CLASS='unicode'>ɥ</td><td>0265</td><td>613</td><td>labial-palatal semivowel</td><td>Fr. <i>huit</i>
</td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>l</td><td CLASS='unicode'>l</td><td>006c</td><td>108</td><td>alvelolar lateral approximant</td><td>Eng. l</td></tr>
|
||||
<tr><td>5</td><td CLASS='unicode'>ɫ</td><td>026B</td><td>619</td><td>velarized l</td><td><i>ba<b>ll</b></i></td></tr>
|
||||
<tr><td>K</td><td CLASS='unicode'>ɬ</td><td>026C</td><td>620</td><td>vl alveolar lateral fricative</td><td>Welsh <i>ll</i></td></tr>
|
||||
<tr><td>L</td><td CLASS='unicode'>ʎ</td><td>028E</td><td>654</td><td>palatal lateral</td><td>It. <i>famiglia</i> </td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
|
||||
<tr><th colspan="6">Diacritics</th></tr>
|
||||
<tr><td>"</td><td CLASS='unicode'>ˈ</td><td>02C8</td><td>712</td><td>primary stress</td><td></td></tr>
|
||||
<tr><td>%</td><td CLASS='unicode'>ˌ</td><td>02CC</td><td>716</td><td>secondary stress</td><td></td></tr>
|
||||
<tr><td>:</td><td CLASS='unicode'>ː</td><td>02D0</td><td>720</td><td>length mark</td><td></td></tr>
|
||||
<tr><td>`</td><td CLASS='unicode'>ʴ</td><td>02B4</td><td>692</td><td>rhotacized</td><td></td></tr>
|
||||
<tr><td>Q~</td><td CLASS='unicode'>ɒ̃</td><td>0303</td><td>771</td><td>nasalization</td><td>Fr. <i>b<b>o</b>n</i> </td></tr>
|
||||
<tr><td>n=</td><td CLASS='unicode'>n̩</td><td>0329</td><td>809</td><td>syllabic consonant</td><td>Eng. <i>garden</i>
</td></tr>
|
||||
<tr><td> </td><td CLASS='unicode'> </td><td>0020</td><td>32</td><td>pause</td><td></td></tr>
|
||||
<tr><td>.</td><td CLASS='unicode'>.</td><td>002E</td><td>46</td><td>End of sentence</td><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
@ -1,13 +0,0 @@
|
||||
bead sing bid thin .
|
||||
bed then bad shed .
|
||||
bard beige cod etch .
|
||||
cord edge good food bud .
|
||||
bird about moon man .
|
||||
gnat fat vat .
|
||||
when wet .
|
||||
far pick tin tone .
|
||||
gill kill Lily .
|
||||
yet gore round rabbit .
|
||||
lateral single zoo .
|
||||
hello day go eye cow .
|
||||
boy beer bare tour.
|
@ -19,8 +19,17 @@
|
||||
*/
|
||||
#include "config.h"
|
||||
/* jms: deutsch */
|
||||
/* $Id: say.c,v 1.1 2006-06-11 07:13:27 urchlay Exp $
|
||||
/* $Id: say.c,v 1.2 2006-06-11 21:49:09 stephena Exp $
|
||||
$Log: not supported by cvs2svn $
|
||||
Revision 1.1 2006/06/11 07:13:27 urchlay
|
||||
|
||||
Forgive the gigantic commit; I'm importing "rsynth". It's not really such
|
||||
a big library, and it's not commonly installed anywhere, and it's GPL.
|
||||
|
||||
Actually, a good chunk of rsynth can be removed (all the stuff related
|
||||
to perl modules and text-to-speech, which we won't need for Stella). I'll
|
||||
prune it when I figure out exactly what I can keep...
|
||||
|
||||
* Revision 1.13 1994/11/08 13:30:50 a904209
|
||||
* 2.0 release
|
||||
*
|
||||
@ -58,7 +67,11 @@
|
||||
* Add IDs and merge Jon's klatt sources - incomplete
|
||||
*
|
||||
*/
|
||||
char *say_id = "$Id: say.c,v 1.1 2006-06-11 07:13:27 urchlay Exp $";
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
char *say_id = "$Id: say.c,v 1.2 2006-06-11 21:49:09 stephena Exp $";
|
||||
extern char *Revision;
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
@ -83,7 +96,6 @@ extern char *Revision;
|
||||
#include "deutsch.h"
|
||||
#include "say.h"
|
||||
|
||||
|
||||
unsigned
|
||||
spell_out(char *word, int n, darray_ptr phone)
|
||||
{
|
||||
@ -348,3 +360,6 @@ say_file(rsynth_t * rsynth, FILE * f)
|
||||
darray_free(&line);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -1,15 +0,0 @@
|
||||
#!/bin/sh
|
||||
date +' %H %M %p %A %d %B %Y' | say
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,251 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 1994,2001-2004 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
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
|
||||
|
||||
*/
|
||||
#include "config.h"
|
||||
extern char *Revision;
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "useconfig.h"
|
||||
#include <math.h>
|
||||
#ifdef OS2
|
||||
#include <signal.h>
|
||||
#include <setjmp.h>
|
||||
#include <float.h>
|
||||
#endif /* OS2 */
|
||||
#include "darray.h"
|
||||
#include "rsynth.h"
|
||||
#include "hplay.h"
|
||||
#include "dict.h"
|
||||
#include "lang.h"
|
||||
#include "text.h"
|
||||
#include "getargs.h"
|
||||
#include "phones.h"
|
||||
#include "aufile.h"
|
||||
#include "charset.h" /* national differences ,jms */
|
||||
#include "english.h"
|
||||
#include "deutsch.h"
|
||||
#include "say.h"
|
||||
|
||||
char *program = "say";
|
||||
|
||||
int verbose = 0;
|
||||
|
||||
#if 1
|
||||
lang_t *lang = &English;
|
||||
#else
|
||||
lang_t *lang = &Deutsch;
|
||||
#endif
|
||||
|
||||
long clip_max;
|
||||
float peak;
|
||||
|
||||
static short
|
||||
clip(long *clip_max, float input, float *peak)
|
||||
{
|
||||
long temp = (long) input;
|
||||
float isq = input * input;
|
||||
#ifdef PEAK
|
||||
if (isq > *peak)
|
||||
*peak = isq;
|
||||
#else
|
||||
*peak += isq;
|
||||
#endif
|
||||
if (-temp > *clip_max)
|
||||
*clip_max = -temp;
|
||||
if (temp > *clip_max)
|
||||
*clip_max = temp;
|
||||
if (temp < -32767) {
|
||||
temp = -32767;
|
||||
}
|
||||
else if (temp > 32767) {
|
||||
temp = 32767;
|
||||
}
|
||||
return (temp);
|
||||
}
|
||||
|
||||
static void *
|
||||
save_sample(void *user_data, float sample, unsigned nsamp,
|
||||
rsynth_t * rsynth)
|
||||
{
|
||||
darray_t *buf = (darray_t *) user_data;
|
||||
darray_short(buf, clip(&clip_max, sample, &peak)); /* Convert back to integer */
|
||||
return (void *) buf;
|
||||
}
|
||||
|
||||
static void *
|
||||
flush_samples(void *user_data, unsigned nsamp, rsynth_t * rsynth)
|
||||
{
|
||||
darray_t *buf = (darray_t *) user_data;
|
||||
if (buf->items) {
|
||||
short *samp = (short *) darray_find(buf, 0);
|
||||
audio_play(buf->items, samp);
|
||||
if (file_write)
|
||||
(*file_write) (buf->items, samp);
|
||||
buf->items = 0;
|
||||
}
|
||||
return (void *) buf;
|
||||
}
|
||||
|
||||
static char *
|
||||
concat_args(int argc, char **argv)
|
||||
{
|
||||
int len = 0;
|
||||
int i;
|
||||
char *buf;
|
||||
for (i = 1; i < argc; i++)
|
||||
len += strlen(argv[i]) + 1;
|
||||
buf = (char *) malloc(len);
|
||||
if (buf) {
|
||||
char *d = buf;
|
||||
for (i = 1; i < argc;) {
|
||||
char *s = argv[i++];
|
||||
while (*s)
|
||||
*d++ = *s++;
|
||||
if (i < argc)
|
||||
*d++ = ' ';
|
||||
else
|
||||
*d = '\0';
|
||||
}
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
char *file_name = NULL;
|
||||
char *voice_file = NULL;
|
||||
char *par_name = NULL;
|
||||
char *input_phones = "sampa";
|
||||
double mSec_per_frame = 10;
|
||||
double F0Hz = 133.0;
|
||||
double speed = 1.0;
|
||||
double frac = 0.5;
|
||||
long gain = 57;
|
||||
int monotone = 0;
|
||||
int etrace = 0;
|
||||
int f0trace = 0;
|
||||
|
||||
int dodur = 1;
|
||||
#ifndef OS2
|
||||
program = argv[0];
|
||||
#else /* OS2 */
|
||||
|
||||
_control87(EM_INVALID | EM_DENORMAL | EM_ZERODIVIDE | EM_OVERFLOW |
|
||||
EM_UNDERFLOW | EM_INEXACT, MCW_EM);
|
||||
|
||||
_ctype = ctable + 1; /* jms: proper character handling for toupper, tolower... */
|
||||
|
||||
/* if (NULL == setlocale(LC_ALL, "GERM") ) */
|
||||
/* if (NULL == setlocale(LC_ALL, "DE_DE") ) */
|
||||
/* if (NULL == setlocale(LC_ALL, "") ) */
|
||||
/*printf("setlocale failed.\n") */ ;
|
||||
/* jms */
|
||||
|
||||
#endif /* OS2 */
|
||||
|
||||
init_locale();
|
||||
|
||||
argc = getargs("Synth", argc, argv,
|
||||
"d", "", &dict_path, "Which dictionary [b|a|g]",
|
||||
"v", NULL, &verbose, "Verbose, show phonetic form",
|
||||
"I", "", &input_phones, "Phoneset of input (for festival)",
|
||||
"L", "", &voice_file, "Log file of voice data",
|
||||
"D", NULL, &dodur, "Honour durations in .pho file",
|
||||
"m", "%lg", &mSec_per_frame, "mSec per frame",
|
||||
"F", "%lg", &F0Hz, "F0 Frequency",
|
||||
"f", "", &file_name, "File to process",
|
||||
"p", "", &par_name, "Parameter file for plot",
|
||||
"S", "%lg", &speed, "Speed (1.0 is 'normal')",
|
||||
"K", "%lg", &frac, "Parameter filter 'fraction'",
|
||||
"M", NULL, &monotone, "Hold F0 fixed",
|
||||
"E", NULL, &etrace, "Trace element sequence",
|
||||
"G", "%ld", &gain, "Overall Gain",
|
||||
NULL);
|
||||
|
||||
/* audio_init sets the rate */
|
||||
argc = audio_init(argc, argv);
|
||||
/* so must come before file init which writes rate to header */
|
||||
argc = file_init(argc, argv);
|
||||
|
||||
|
||||
if (help_only) {
|
||||
fprintf(stderr, "Usage: %s [options as above] [words to say]\n",
|
||||
program);
|
||||
fprintf(stderr, "or %s [options as above] < file-to-say\n",
|
||||
program);
|
||||
fprintf(stderr, "(%s)\n", Revision);
|
||||
}
|
||||
else {
|
||||
darray_t samples;
|
||||
rsynth_t *rsynth;
|
||||
darray_init(&samples, sizeof(short), 2048); /* chg jms */
|
||||
if (dict_path && *dict_path)
|
||||
dict_init(dict_path);
|
||||
rsynth = rsynth_init(samp_rate, mSec_per_frame,
|
||||
rsynth_speaker(F0Hz, gain, Elements),
|
||||
save_sample, flush_samples, &samples);
|
||||
if (par_name) {
|
||||
rsynth->parm_file = fopen(par_name, "w");
|
||||
if (!rsynth->parm_file)
|
||||
perror(par_name);
|
||||
}
|
||||
rsynth->smooth = frac;
|
||||
rsynth->speed = speed;
|
||||
if (monotone)
|
||||
rsynth->flags |= RSYNTH_MONOTONE;
|
||||
if (etrace)
|
||||
rsynth->flags |= RSYNTH_ETRACE;
|
||||
if (verbose)
|
||||
rsynth->flags |= RSYNTH_VERBOSE;
|
||||
if (f0trace)
|
||||
rsynth->flags |= RSYNTH_F0TRACE;
|
||||
|
||||
if (!file_name && argc < 2) {
|
||||
say_file(rsynth, stdin);
|
||||
}
|
||||
else {
|
||||
if (file_name) {
|
||||
rsynth_pho(rsynth, file_name, dodur, input_phones);
|
||||
}
|
||||
if (argc > 1) {
|
||||
char *s = concat_args(argc, argv);
|
||||
if (s) {
|
||||
say_string(rsynth, s);
|
||||
free(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (file_term)
|
||||
(*file_term) ();
|
||||
audio_term();
|
||||
/* warn if we have clipped (or got close) converting to 16-bit */
|
||||
if (verbose || clip_max > 30000) {
|
||||
float v = clip_max * 2.5 / 32767;
|
||||
fprintf(stderr, "Clipng @ %lu %.4g %.3g %.4gW\n",
|
||||
clip_max, clip_max / 32767.0,
|
||||
20 * log10(clip_max / 32767.0), v * v / 8);
|
||||
|
||||
}
|
||||
if (have_dict)
|
||||
dict_term();
|
||||
rsynth_term(rsynth);
|
||||
darray_free(&samples);
|
||||
}
|
||||
return (0);
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
use blib "../Encode-sampa";
|
||||
use blib "../Tkutf8";
|
||||
use Encode;
|
||||
use Encode::Sampa;
|
||||
use Tk;
|
||||
|
||||
my $fixed = '-misc-fixed-medium-r-normal--15-140-75-75-c-0-iso10646-1';
|
||||
my $face = (@ARGV) ? shift : ['arial unicode ms',14];
|
||||
|
||||
|
||||
my $enc = find_encoding("sampa");
|
||||
#print "$enc\n";
|
||||
|
||||
my $mw = MainWindow->new;
|
||||
my $t = $mw->Scrolled('Text',
|
||||
-font => $fixed)->pack;
|
||||
|
||||
sub PHONE
|
||||
{
|
||||
my ($e,$nm,$br,$am,$ex) = @_;
|
||||
|
||||
#print join(',',@_),"\n";
|
||||
warn "$e vs $nm" if $e ne $nm;
|
||||
my $ubr = $enc->decode($br);
|
||||
my $uam = $enc->decode($am);
|
||||
$uam =~ s/\x{259}`/\x{25a}/g;
|
||||
$uam =~ s/\x{25C}`/\x{25d}/g;
|
||||
$t->insert('end',"$nm\t$ubr\t$uam\t$ex\n");
|
||||
}
|
||||
|
||||
our @U = '@U';
|
||||
|
||||
{
|
||||
do "./phones.def";
|
||||
}
|
||||
|
||||
MainLoop;
|
@ -1 +0,0 @@
|
||||
I am a speech synthesizer, and my input is conventional english text.
|
@ -1,187 +0,0 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
|
||||
use Tk;
|
||||
use Tk::Font;
|
||||
use Rsynth::Elements;
|
||||
|
||||
%vowels = (
|
||||
|
||||
'0Cardinal' => {
|
||||
'i' => [ 240, 2400 ],
|
||||
'e' => [ 390, 2300 ],
|
||||
'E' => [ 610, 1900 ],
|
||||
'a' => [ 850, 1610 ],
|
||||
'A' => [ 740, 940 ],
|
||||
'V' => [ 600, 1170 ],
|
||||
'7' => [ 460, 1310 ],
|
||||
'M' => [ 300, 1390 ],
|
||||
},
|
||||
|
||||
'1Rounded' => {
|
||||
'y' => [ 235, 2100 ],
|
||||
'2' => [ 370, 1900 ],
|
||||
'9' => [ 585, 1710 ],
|
||||
'&' => [ 820, 1530 ],
|
||||
'Q' => [ 700, 760 ],
|
||||
'O' => [ 500, 700 ],
|
||||
'o' => [ 360, 640 ],
|
||||
'u' => [ 250, 595 ],
|
||||
},
|
||||
|
||||
'rp camenc' => {
|
||||
'i' => [ 300, 2300 ], # seat head
|
||||
'I' => [ 360, 2100 ], # sit hid
|
||||
'e' => [ 570, 1970 ], # set head
|
||||
'{' => [ 750, 1750 ], # sat had
|
||||
'A' => [ 680, 1100 ], # cart hard
|
||||
'Q' => [ 600, 900 ], # cot hod
|
||||
'O' => [ 450, 740 ], # caught hoard
|
||||
'U' => [ 380, 950 ], # full hood
|
||||
'u' => [ 300, 940 ], # fool who
|
||||
'V' => [ 720, 1240 ], # cut hub
|
||||
'3' => [ 580, 1380 ], # curt herb
|
||||
},
|
||||
|
||||
'rp Gimson/Wells' => {
|
||||
'i' => [ 280, 2620, 3380 ], # seat head
|
||||
'I' => [ 360, 2220, 2960 ], # sit hid
|
||||
'e' => [ 600, 2060, 2840 ], # set head
|
||||
'{' => [ 800, 1760, 2500 ], # sat had
|
||||
'V' => [ 760, 1320, 2500 ], # cut hub
|
||||
'A' => [ 740, 1180, 2640 ], # cart hard
|
||||
'Q' => [ 560, 920, 2560 ], # cot hod
|
||||
'O' => [ 480, 760, 2620 ], # caught hoard
|
||||
'U' => [ 380, 940, 2300 ], # full hood
|
||||
'u' => [ 320, 920, 2200 ], # fool who
|
||||
'3' => [ 560, 1480, 2520 ], # curt herb
|
||||
},
|
||||
|
||||
'am Ladefoged' => {
|
||||
'i' => [ 280, 2250, 2890 ], # seat head
|
||||
'I' => [ 400, 1920, 2560 ], # sit hid
|
||||
'E' => [ 550, 1770, 2490 ], # curt herb
|
||||
'{' => [ 690, 1660, 2490 ], # sat had
|
||||
'A' => [ 710, 1100, 2540 ], # cart hard
|
||||
'O' => [ 590, 880, 2540 ], # caught hoard
|
||||
'U' => [ 450, 1030, 2380 ], # full hood
|
||||
'u' => [ 310, 870, 2250 ], # fool who
|
||||
},
|
||||
|
||||
|
||||
'rsynth' => {
|
||||
'@' => [490,1480,2500],
|
||||
'a' => [790,1330,2500],
|
||||
'A' => [790,990,2500],
|
||||
'Q' => [610,880,2500],
|
||||
'2' => [400,1960,2200],
|
||||
'3' => [580,1420,2500],
|
||||
'u' => [250,880,2200],
|
||||
'U' => [370,1000,2500],
|
||||
'e' => [640,2020,2500],
|
||||
'V' => [700,1360,2500],
|
||||
'y' => [250,2100,2700],
|
||||
'i' => [250,2320,3200],
|
||||
'I' => [400,2080,2560],
|
||||
'{' => [790,1780,2500],
|
||||
'O' => [490,820,2500],
|
||||
'o' => [370,700,2200],
|
||||
},
|
||||
);
|
||||
|
||||
=for jill
|
||||
|
||||
'jill' => {
|
||||
'i' => [253, 2692, 3806],
|
||||
'y' => [397, 2219, 2888],
|
||||
'M' => [416, 1478, 2911],
|
||||
'u' => [286, 618, 2274],
|
||||
'A' => [698, 980, 3082],
|
||||
'Q' => [651, 896, 3040],
|
||||
'a' => [1240, 1535, 2989],
|
||||
'&' => [740, 1371, 3006],
|
||||
'E' => [945, 1675, 2448],
|
||||
'e' => [395, 2698, 3052],
|
||||
'{' => [879, 1473, 3414],
|
||||
},
|
||||
|
||||
=for john
|
||||
|
||||
'john' => {
|
||||
'i' => [269, 2095, 3782],
|
||||
'y' => [228, 1826, 2188],
|
||||
'M' => [280, 1126, 2082],
|
||||
'u' => [220, 530, 2080],
|
||||
'A' => [524, 909, 2664],
|
||||
'Q' => [553, 875, 2572],
|
||||
'a' => [659, 1315, 2509], #[daIk
|
||||
'&' => [715, 1293, 1778],
|
||||
'E' => [727, 1671, 2314],
|
||||
'e' => [425, 2070, 2701],
|
||||
'{' => [961, 1703, 2395],
|
||||
},
|
||||
|
||||
=cut
|
||||
|
||||
read_elements();
|
||||
delete $vowels{'rsynth'};
|
||||
|
||||
foreach my $e (values %elem)
|
||||
{
|
||||
if ($e->{features}{vwl})
|
||||
{
|
||||
my $ch = $e->{unicode};
|
||||
utf8::decode($ch);
|
||||
$vowels{'rsynth'}{$ch} = [$e->{f1}[0],$e->{f2}[0]];
|
||||
}
|
||||
else
|
||||
{
|
||||
warn "Skip ".$e->{sampa}.' '.join('|',keys %{$e->{features}})."\n";
|
||||
}
|
||||
}
|
||||
|
||||
my $mw = MainWindow->new;
|
||||
$mw->menu;
|
||||
|
||||
my $IPA = $mw->Font(family => 'Gentium',
|
||||
point => 140, slant => 'r',
|
||||
weight => 'medium');
|
||||
|
||||
my $t = $mw->Text(-width => 15)->pack(-side => 'right');
|
||||
|
||||
my $c = $mw->Scrolled('Canvas')->pack(-expand => 1, -fill => 'both');
|
||||
|
||||
my @colours = qw(black #008080 green orange red blue #800080 brown);
|
||||
my $i = 0;
|
||||
|
||||
foreach $name (sort keys %vowels)
|
||||
{
|
||||
my $hash = $vowels{$name};
|
||||
my $colour = $colours[$i++];
|
||||
$t->tagConfigure($colour,-foreground => $colour);
|
||||
$t->insert('end',"$name\n",[$colour]);
|
||||
foreach $v (sort keys %$hash)
|
||||
{
|
||||
my ($f1,$f2) = @{$hash->{$v}};
|
||||
my $x = (3000-($f2-$f1))/6;
|
||||
my $y = ($f1)/3;
|
||||
# my $x = -log($f2-$f1)*100;
|
||||
# my $y = log($f1)*100;
|
||||
|
||||
$c->createText($x, $y,
|
||||
# -anchor => 'center', -justify => 'center',
|
||||
-font => $IPA,
|
||||
-fill => $colour, -text => $v);
|
||||
}
|
||||
}
|
||||
|
||||
print join(',',$c->bbox('all')),"\n";
|
||||
|
||||
my ($minx,$miny,$maxx,$maxy) = $c->bbox('all');
|
||||
$c->configure(-width => $maxx - $minx, -height => $maxy-$miny);
|
||||
|
||||
$c->configure(-scrollregion => [$c->bbox('all')]);
|
||||
|
||||
MainLoop;
|
||||
|
||||
|
||||
|
@ -1,82 +0,0 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
use File::Temp qw(tempfile);
|
||||
my $file = shift;
|
||||
my $match = @ARGV ? shift : '^f';
|
||||
open(my $dat,$file) || die "Cannot open $file:$!";
|
||||
my @labels;
|
||||
my $sym;
|
||||
my $ymin = 75;
|
||||
my $ymax = 95;
|
||||
SCAN:
|
||||
while (<$dat>)
|
||||
{
|
||||
if (s/^\s*#\s*//)
|
||||
{
|
||||
s/\s+$//;
|
||||
my @lab = split(/\s+/,$_);
|
||||
push(@labels,[@lab]);
|
||||
# warn "Possible labels:@lab\n";
|
||||
$sym = $lab[0] if @lab == 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
# warn "Data:$_";
|
||||
s/^\s+//;
|
||||
s/\s+$//;
|
||||
my @data = split(/\s+/,$_);
|
||||
foreach my $lab (@labels)
|
||||
{
|
||||
if (@$lab == @data)
|
||||
{
|
||||
@labels = @$lab;
|
||||
last SCAN;
|
||||
}
|
||||
}
|
||||
die "$file:$.:No labels match @data\n";
|
||||
}
|
||||
}
|
||||
|
||||
my ($fh,$path) = tempfile();
|
||||
|
||||
my $lx = 0;
|
||||
my $x = 0;
|
||||
my $yp = $ymin;
|
||||
while (<$dat>)
|
||||
{
|
||||
if (/^\s*#/)
|
||||
{
|
||||
if (/^\s*#\s+(\S+)\s*$/ && $1 ne $sym)
|
||||
{
|
||||
my $xp = ($x+$lx)/2;
|
||||
printf $fh qq[set label "$sym" at %g,%g center rotate \n],$xp,$yp;
|
||||
$lx = $x;
|
||||
$sym = $1;
|
||||
$yp += 5;
|
||||
$yp = $ymin if $yp > $ymax;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
|
||||
warn "Labels: @labels\n";
|
||||
|
||||
print $fh "set data style line\n";
|
||||
my $i = 1;
|
||||
my $sep = 'plot';
|
||||
while (@labels)
|
||||
{
|
||||
my $lab = shift(@labels);
|
||||
if ($lab =~ /$match/o)
|
||||
{
|
||||
print $fh qq[$sep "$file" using 0:$i title "$lab"];
|
||||
$sep = ",\\\n ";
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
print $fh "\n";
|
||||
close($fh);
|
||||
system('gnuplot',-title => "$file /$match/", '-persist',$path);
|
Loading…
x
Reference in New Issue
Block a user