diff options
author | Karl Berry <karl@freefriends.org> | 2012-03-13 22:39:05 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-03-13 22:39:05 +0000 |
commit | 649d975f9fdc7400e017fe94445d9faf338fa8df (patch) | |
tree | d282681dbe272cb6fd771f33b8bcc62259fab99b /Master | |
parent | b92609b93bc7e9649fd001bd7a0c9585da130691 (diff) |
new pstricks package vocaltract (13mar12)
git-svn-id: svn://tug.org/texlive/trunk@25629 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/vocaltract/README | 83 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/vocaltract/vtLatex_AnimationDemo.tex | 36 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/vocaltract/vtLatex_AnimationLauncher.tex | 35 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureDemo.pdf | bin | 0 -> 14325 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureDemo.tex | 31 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureLauncher.tex | 29 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/vocaltract/vtLatex_TimeParams.tex | 1 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/vocaltract/vtMAINVisual.m | 99 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/vocaltract/vtQueryVisual.m | 114 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/vocaltract/VocalTract.sty | 928 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc | 7 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/vocaltract.tlpsrc | 0 |
13 files changed, 1362 insertions, 3 deletions
diff --git a/Master/texmf-dist/doc/latex/vocaltract/README b/Master/texmf-dist/doc/latex/vocaltract/README new file mode 100644 index 00000000000..adac23dfda8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/vocaltract/README @@ -0,0 +1,83 @@ +Vocal Tract Latex package +--------------------------- +by Dr. Dimitrios Ververidis + +The manuscript related to this package can be found on PRACTex journal 2012/1 +URL: http://dw.tug.org/pracjourn/2012-1/ververidis/ververidis.pdf + +Please cite as: + + "Dimitrios Ververidis, Daniel Schneider, and Joachim Koehler, "The vocal tract LATEX package," PracTeX journal, no 1, 2012." + +Package tested for Miktex 2.8 and 2.9 and Matlab 7.5 under Windows + + + +The software is licensed as FREE under APACHE 2.0 licence: +http://www.apache.org/licenses/LICENSE-2.0.html + + + +Using the package: +-------------------- + +Examples + +1st Example - Simple Figure from Latex compiling +------------------------------------------------- + + Create a figure in PS or PDF by compiling with latex the file: + + vtLatex_FigureDemo.tex + + +2nd Example - Animation from Latex compiling +--------------------------------------------- + + Create an animation in PDF by compiling with latex the file: + + vtLatex_AnimationDemo.tex + + +3rd Example - Simple Figure or Animation compiling from Matlab +-------------------------------------------------------------- + + Create a simple Figure or Animation by compiling from Matlab the function + + vtMainVisual.m + + as + >> vtMainVisual(VocalTractVecToTime, SWPDForBMP) + + where + + 1. "VocalTractVecToTime" is the CELL of vocal set up through time. See the codebook of german phonemes in the VocalTract.sty. + + For Example + + VocalTractVecToTime = ... + {[ 0.5, -2, 1 , -2 , 1, -1 , 0, 0, 0, 0], 'i' ; + [ 0.5, -2, 1 , -2 , 0, 2 , 0, 0, 0, 0], 'y(\"u)' ; + [-1 , -1, 1 , -2 , 1, -0.5, 0, 0, 0, 0], 'e' }; + + 2. "SWPDForBMP" is the string either 'bmp' or 'pdf' to define the output format. + + In case of 'bmp' the irfan view programm should be in current path. + From IrfanView two files are needed to be in current directory + 1. "i_view32.exe" and + 2. "/plugins/Postscript.dll" + Free download IrfanView from Irfan Skiljan, E-Mail: irfanview@gmx.net, http://www.irfanview.com + + +4th Example - Animation compiling from Matlab with phonemes as an input +------------------------------------------------------------------------ + + Create a PDF by compiling from Matlab + e.g. + + >> vtQueryVisual('zats') + + + + + diff --git a/Master/texmf-dist/doc/latex/vocaltract/vtLatex_AnimationDemo.tex b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_AnimationDemo.tex new file mode 100644 index 00000000000..c3a8bce5c8d --- /dev/null +++ b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_AnimationDemo.tex @@ -0,0 +1,36 @@ +%======================================= +% Vocal Tract Animation Demo +%======================================= +\documentclass{article} +\usepackage{VocalTract} +\pagestyle{empty} + +\begin{document} +%\input{vtLatex_TimeParams} % Use this file of Parameters otherwise I will use the codebook in Style file +\psset{yunit=1.5cm,xunit=1.5cm} +\begin{animateinline}[poster=first,loop,controls]{1}% +\multiframe{\Nframes}{IndexStepVocalTract=0+1}{ +\begin{pspicture}(0,-0.5)(6.5,8) +\def\BreathType{0.5} % Normal Breathing [0.1 to 0.9] +%=========== BreathTypeIncreaseLinearly ==== +%\FPset\accelerBreath{0.00556} +%\FPmul\BreathType\IndexStepVocalTract\accelerBreath +%\FPadd\BreathType\BreathType{0.1} +\SetOscAmp{\IndexStepVocalTract}{\BreathType} % For Breath +\UpdateRespOscillation % For Breath +\UpdateVocalTract{\IndexStepVocalTract} % Update Vocal Tract in the respective time +\VocalChords % Show VCords +\StomachCompartment % Show Stomach Compartment +\rput(1.75,7){\ShowPhonemesGerman{\IndexStepVocalTract}} % Show the phonemes transcriptions +\ShowPressure{\IndexStepVocalTract} % Show Pressure as Red Space +\rput(2,0){\ShowLinearTubes{\IndexStepVocalTract}\VocalChords} % The linear model next to the human +\rput(2.5,0){\ShowParameters} % Explain the parameters +%------------ Grid and Axes Labels -------------- +%\uput[45](0,8){$\times$ 10 cm} +%\uput[45](3,0){$\times$ 10 cm} +%\psgrid[gridcolor=blue,subgridcolor=gray,gridlabels=7pt,subgriddiv=10](0,0)(5,12) % subgriddiv=4,griddots=10, +%------------------------------------------------ +\end{pspicture} +} % Multiframe +\end{animateinline} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/vocaltract/vtLatex_AnimationLauncher.tex b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_AnimationLauncher.tex new file mode 100644 index 00000000000..329e01243d8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_AnimationLauncher.tex @@ -0,0 +1,35 @@ +%======================================= +% Vocal Tract Animation Launcher +%======================================= +\documentclass{article} +\usepackage{VocalTract} +\pagestyle{empty} + +\begin{document} +\input{vtLatex_TimeParams} % This is the file of Parameters generated by Matlab +\psset{yunit=2cm,xunit=2cm} +\begin{animateinline}[poster=first,loop,controls]{1}% +\multiframe{\Nframes}{IndexStepVocalTract=0+1}{ +\begin{pspicture*}(0cm,-2cm)(13cm,15.5cm) +\def\BreathType{0.5} % Normal Breathing [0.1 to 0.9] +%=========== BreathTypeIncreaseLinearly ==== +%\FPset\accelerBreath{0.00556} +%\FPmul\BreathType\IndexStepVocalTract\accelerBreath +%\FPadd\BreathType\BreathType{0.1} +\SetOscAmp{\IndexStepVocalTract}{\BreathType} % For Breath +\UpdateVocalTract{\IndexStepVocalTract} % Update Vocal Tract in the respective time +\VocalChords % Show VCords +\StomachCompartment % Show Stomach Compartment +\rput(3cm,14cm){\ShowPhonemesGerman{\IndexStepVocalTract}} % Show the phonemes transcriptions +\ShowPressure{\IndexStepVocalTract} % Show Pressure as Red Space +\rput(3cm,0cm){\ShowLinearTubes{\IndexStepVocalTract}\VocalChords} % The linear model next to the human +\rput(3.5cm,0cm){\ShowParameters} % Explain the parameters +%------------ Grid and Axes Labels -------------- +%\uput[45](0,8){$\times$ 10 cm} +%\uput[45](3,0){$\times$ 10 cm} +%\psgrid[gridcolor=blue,subgridcolor=gray,gridlabels=7pt,subgriddiv=10](0,0)(5,12) % subgriddiv=4,griddots=10, +%------------------------------------------------ +\end{pspicture*} +} % Multiframe +\end{animateinline} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureDemo.pdf b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureDemo.pdf Binary files differnew file mode 100644 index 00000000000..c6d81dc0d2a --- /dev/null +++ b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureDemo.pdf diff --git a/Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureDemo.tex b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureDemo.tex new file mode 100644 index 00000000000..2359725be64 --- /dev/null +++ b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureDemo.tex @@ -0,0 +1,31 @@ +%============================================== +% Vocal Tract Figure Generator for PS or PDF +%============================================== +\documentclass{article} +\usepackage{VocalTract} +\pagestyle{empty} + +\begin{document} +%\input{vtLatex_TimeParams} % In case u want to store coordinates to a file +% or Alternative Use the inside codebook of vector in ".sty" file +\def\IndexStepVocalTract{13} % 13 corresponds to f +\psset{yunit=2cm,xunit=2cm} +\begin{pspicture*}(0cm,0cm)(13cm,18cm) +\def\BreathType{0.5} % Normal Breathing [0.1 to 0.9] +\SetOscAmp{\IndexStepVocalTract}{\BreathType} % For Breath +\UpdateRespOscillation % For Breath +\UpdateVocalTract{\IndexStepVocalTract} % Update Vocal Tract in the respective time +\VocalChords % Show VCords +\StomachCompartment % Show Stomach Compartment +%\PlotDotsVocal % Show some movable vocal tract points +\rput(3cm,14cm){\ShowPhonemesGerman{\IndexStepVocalTract}} % Show the phonemes transcriptions +\ShowPressure{\IndexStepVocalTract} % Show Pressure as Red Space +\rput(3cm,0cm){\ShowLinearTubes{\IndexStepVocalTract}\VocalChords} % The linear model next to the human +\rput(3.5cm,0cm){\ShowParameters} % Explain the parameters +%------------ Grid and Axes Labels -------------- +%\uput[45](0,8){$\times$ 10 cm} +%\uput[45](3,0){$\times$ 10 cm} +%\psgrid[gridcolor=blue,subgridcolor=gray,gridlabels=7pt,subgriddiv=10](0,0)(5,12) % subgriddiv=4,griddots=10, +%------------------------------------------------ +\end{pspicture*} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureLauncher.tex b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureLauncher.tex new file mode 100644 index 00000000000..eb0ed2c8b03 --- /dev/null +++ b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_FigureLauncher.tex @@ -0,0 +1,29 @@ +%======================================= +% Vocal Tract Figure Generator +%======================================= +\documentclass{article} +\usepackage{VocalTract} +\pagestyle{empty} + +\begin{document} +\input{vtLatex_TimeParams} % Parameters stored in a file +\def\IndexStepVocalTract{1} +\psset{yunit=2cm,xunit=2cm} +\begin{pspicture*}(0cm,0cm)(13cm,18cm) +\def\BreathType{0.5} % Normal Breathing [0.1 to 0.9] +\SetOscAmp{\IndexStepVocalTract}{\BreathType} % For Breath +\UpdateVocalTract{\IndexStepVocalTract} % Update Vocal Tract in the respective time +\VocalChords % Show VCords +\StomachCompartment % Show Stomach Compartment +%\PlotDotsVocal % Show movable vocal tract points +\rput(3cm,14cm){\ShowPhonemesGerman{\IndexStepVocalTract}} % Show the phonemes transcriptions +\ShowPressure{\IndexStepVocalTract} % Show Pressure as Red Space +\rput(3cm,0cm){\ShowLinearTubes{\IndexStepVocalTract}\VocalChords} % The linear model next to the human +\rput(3cm,0cm){\ShowParameters} % Explain the parameters +%------------ Grid and Axes Labels -------------- +%\uput[45](0,8){$\times$ 10 cm} +%\uput[45](3,0){$\times$ 10 cm} +%\psgrid[gridcolor=blue,subgridcolor=gray,gridlabels=7pt,subgriddiv=10](0,0)(5,12) % subgriddiv=4,griddots=10, +%------------------------------------------------ +\end{pspicture*} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/vocaltract/vtLatex_TimeParams.tex b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_TimeParams.tex new file mode 100644 index 00000000000..706036591be --- /dev/null +++ b/Master/texmf-dist/doc/latex/vocaltract/vtLatex_TimeParams.tex @@ -0,0 +1 @@ +\newarray\SpeakVec\readarray{SpeakVec}{ 2.5&0&0&0.4&0&0&0&-1&0&0&z&-1.5&2.5&0&-0.5&0.5&-0.5&0&0&0&0&a&0&-0.5&-1&2.3&0&0&0&-3&-3&-3&t&2.5&0&0&0.4&0&0&0&-3&-3&-3&s& } \dataheight=11 \def\Nframes{5}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/vocaltract/vtMAINVisual.m b/Master/texmf-dist/doc/latex/vocaltract/vtMAINVisual.m new file mode 100644 index 00000000000..6356cb7f66b --- /dev/null +++ b/Master/texmf-dist/doc/latex/vocaltract/vtMAINVisual.m @@ -0,0 +1,99 @@ +function vtMAINVisual(VocalTractVecToTime,SWPDForBMP) + +if nargin < 2 + SWPDForBMP = 'BMP'; % PDF, BMP + %======================================================================================== + % 1. Jaw Position 4. Tongue Apex 7. Larynx Height 10. Nasal Cavity + % 2. Tongue Position 5. Lip Aperture 8. Glottal Aperture 11. Phoneme Label + % 3. Tongue Shape 6. Lip Protrusion 9. Glottal Frequency + %======================================================================================== + % 1 2 3 4 5 6 7 8 9 10 11 + % JW TP TS TA LA LP LH GA FX NS + % 3 3 3 3 3 3 3 3 3 3 Max + % 0 0 0 0 0 0 0 0 0 0 Relax + % -3 3 -3 -3 -3 -3 -3 -3 -3 -3 Min + %======================================================================================== + VocalTractVecToTime = ... + {[ 0.5, -2, 1 , -2 , 1, -1 , 0, 0, 0, 0], 'i' ; + [ 0.5, -2, 1 , -2 , 0, 2 , 0, 0, 0, 0], 'y(\"u)' ; + [-1 , -1, 1 , -2 , 1, -0.5, 0, 0, 0, 0], 'e' }; +end + +% if you want a BMP Figure (not a PDF Animation) use first line +if strcmp(SWPDForBMP,'BMP') && size(VocalTractVecToTime,1)>1 + VocalTractVecToTime = VocalTractVecToTime(1,1:2); +end + + +NumberOfTimeFrames = size(VocalTractVecToTime,1); +VocalTractVecToTimeSTR = Mat2StrCustom(VocalTractVecToTime); + +%---------------- Add some commands before and after --------------- +LatexDefCommandsOfCordsPre = ['\newarray\SpeakVec' ... + '\readarray{SpeakVec}{']; + +LatexDefCommandsOfCordsPost = ['}'... + ' \dataheight=11' ... + ' \def\Nframes{' num2str(NumberOfTimeFrames+1) '}']; + +% %------- Create the Coordinates file ---------------- +fid = fopen('vtLatex_TimeParams.tex', 'w'); + +fwrite(fid,sprintf('%s %s %s',LatexDefCommandsOfCordsPre,... + VocalTractVecToTimeSTR,... + LatexDefCommandsOfCordsPost),'char'); +fclose(fid); + +%---------------- START the Compilers ----------------------------- + +if strcmp(SWPDForBMP,'BMP') + %-- tex2dvi + !latex -interaction=nonstopmode vtLatex_FigureLauncher.tex + %--- view dvi + %!"C:/Program Files/MiKTeX 2.8/miktex/bin/yap.exe" vtLatex_FigureLauncher.dvi + %--- dvi2ps + !dvips -o vtLatex_FigureLauncher.ps vtLatex_FigureLauncher.dvi + + %--- ps2bmp + strpwd = lower(pwd); + eval(['!i_view32.exe "' strpwd '\vtLatex_FigureLauncher.ps"' ... + ' /crop=(130,250,550,600) /convert="' ... + strpwd '\vtLatex_FigureLauncher.bmp" ']); + + %--- read and show + a = imread('vtLatex_FigureLauncher.bmp'); + imshow(a); +elseif strcmp(SWPDForBMP,'PDF') + %-- tex2dvi + !latex -interaction=nonstopmode vtLatex_AnimationLauncher.tex + %--- view dvi + %!"C:/Program Files/MiKTeX 2.8/miktex/bin/yap.exe" vtLatex_AnimationLauncher.dvi + %--- dvi2ps + !dvips -o vtLatex_AnimationLauncher.ps vtLatex_AnimationLauncher.dvi + %---- ps2pdf + !ps2pdf vtLatex_AnimationLauncher.ps + %--- view pdf + !AcroRd32.exe vtLatex_AnimationLauncher.pdf +end + + + + +%=================================================================== +% Matrix to a String Ordering with & intervening +%=================================================================== +function STR = Mat2StrCustom(Matr) + +R = size(Matr,1); +C = length(Matr{1,1}); + +STR = []; +for IndRow= 1:R + for IndCol = 1:C + STR = [STR num2str(Matr{IndRow,1}(IndCol)) '&']; + end + STR = [STR Matr{IndRow,2} '&']; +end +STR = STR(1:end-1); + + diff --git a/Master/texmf-dist/doc/latex/vocaltract/vtQueryVisual.m b/Master/texmf-dist/doc/latex/vocaltract/vtQueryVisual.m new file mode 100644 index 00000000000..f0b05abc9d9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/vocaltract/vtQueryVisual.m @@ -0,0 +1,114 @@ +function vtQueryVisual(STRQuery) + +%======================================================================================== +% 1. Jaw Position 4. Tongue Apex 7. Larynx Height 10. Nasal Cavity +% 2. Tongue Position 5. Lip Aperture 8. Glottal Aperture 11. Phoneme Label +% 3. Tongue Shape 6. Lip Protrusion 9. Glottal Frequency +%======================================================================================== +% 1 2 3 4 5 6 7 8 9 10 11 +% JW TP TS TA LA LP LH GA FX NS +% 3 3 3 3 3 3 3 3 3 3 Max +% 0 0 0 0 0 0 0 0 0 0 Relax +% -3 3 -3 -3 -3 -3 -3 -3 -3 -3 Min +%======================================================================================== +VocalTractVecToTimeCodeBook = ... + {[ 0.5, -2 , 1 ,-2 , 1 , -1 , 0 , 0, 0, 0], 'i' ; % 1 + [ 0.5, -2 , 1 ,-2 , 0 , 2 , 0 , 0, 0, 0], 'y' ; % 2 (\"u) + [-1 , -1 , 1 ,-2 , 1 ,-0.5 , 0 , 0, 0, 0], 'e' ; % 3 + [-1 , -1 , 1 ,-2 , 0 , 2 , 0 , 0, 0 , 0 ], '2' ; % 4 (\"o) + [-1.5, 2.5, 0 ,-0.5 , 0 , 2 , 0 , 0, 0 , 0 ], 'E' ; % 5 (\"a) + [-1.5, 1.5, 0 , 0.5 , 0.5, -0.5 , 0 , 0, 0 , 0 ], '@' ; % 6 (Schwa) + [-1.5, 2.5, 0 ,-0.5 , 0.5, -0.5 , 0 , 0, 0 , 0 ], 'a' ; % 7 + [0.5 , 2 , 1.5 ,-2 ,-1 , 1.5 , 0 , 0, 0 , 0 ], 'u' ; % 8 + [-0.4, 3.0, 1.5 , 0 ,-0.3, 0 , 0 , 0, 0 , 0 ], 'o' ; % 9 +... %-------------------------------------------------------------------Unvoiced Cons.-------- + [0 , 0 , 0 , 0 ,-3 , 0 , 0 ,-3 , -3 , -3 ], 'p' ; % 10 % UPlosives + [0 , -0.5 ,-1 , 2.3 , 0 , 0 , 0 ,-3 , -3 , -3 ], 't' ; % 11 + [0 , -1.5 , 3 , -3 , 0 , 0 , 0 ,-3 , -3 , -3 ], 'k' ; % 12 + [2 , 1 , 0 , 0 ,-1.5, -2 , 0 ,-3 , -3 , -3 ], 'f' ; % 13 % UFricatives + [2.5 , 0 , 0 , 0.4 , 0 , 0 , 0 ,-3 , -3 , -3 ], 's' ; % 14 + [0 , -1 , 3 , -3 , 0 , 0 , 0 ,-3 , -3 , -3 ], 'x' ; % 15 +...%----------------------------------------------------------------- Voiced Cons. -------- + [0 , 0 , 0 , 0 ,-3 , 0 ,-1 , -1 , 0 , -3 ], 'b' ; % 16 % VPlosives + [0 , -0.5 ,-1 , 2.3 , 0 , 0 , 0 , -1 , 0 , -3 ], 'd' ; % 17 + [0 , -1.5 , 3 , -3 , 0 , 0 , 0 , -1 , 0 , -3 ], 'g' ; % 18 + [1 , 0 , 0 , 3 , 0 , 0 , 0 , -1 , 0 , 0 ], 'r' ; % 19 % Rolled + [0 , -2 , 3 , 3 , 0 , 0 , 0 , -1 , 0 , 0 ], 'l' ; % 20 % Lateral + [0 , 2.3 , 2.5 , -2 , 0 , 0 , 0 , -1 , 0 , 0 ], 'R' ; % 21 % Approximants + [1 , 0 , 2 , 0 , 0 , 0 , 0 , -1 , 0 , 0 ], 'j' ; % 22 + [2 , 1 , 0 , 0 ,-1.5, -2 , 0 , -1 , 0 , 0 ], 'v' ; % 23 % VFricatives + [2.5 , 0 , 0 , 0.4 , 0 , 0 , 0 , -1 , 0 , 0 ], 'z' ; % 24 + [0 , 0 , 0 , 0 ,-3 , -1 , 0 , -1 , 0 , 0 ], 'm' ; % 25 % Nasals + [0.5 , 0 , 0 , 3 , 0 , 0 , 0 , -1 , 0 , 0 ], 'n' }; % 26 + + + +VocalTractVecToTime = FindVectorsFromCodeBook(VocalTractVecToTimeCodeBook, STRQuery); + +NumberOfTimeFrames = size(VocalTractVecToTime,1); +VocalTractVecToTimeSTR = Mat2StrCustom(VocalTractVecToTime); + +%---------------- Add some commands before and after --------------- +LatexDefCommandsOfCordsPre = ['\newarray\SpeakVec' ... + '\readarray{SpeakVec}{']; + +LatexDefCommandsOfCordsPost = ['}'... + ' \dataheight=11' ... + ' \def\Nframes{' num2str(NumberOfTimeFrames+1) '}']; + +% %------- Create the Coordinates file ---------------- +fid = fopen('vtLatex_TimeParams.tex', 'w'); + +fwrite(fid,sprintf('%s %s %s',LatexDefCommandsOfCordsPre,... + VocalTractVecToTimeSTR,... + LatexDefCommandsOfCordsPost),'char'); +fclose(fid); + +%---------------- START the Compilers ----------------------------- + %-- tex2dvi + !latex -interaction=nonstopmode vtLatex_AnimationLauncher.tex + %--- dvi2ps + !dvips -o vtLatex_AnimationLauncher.ps vtLatex_AnimationLauncher.dvi + %---- ps2pdf + !ps2pdf vtLatex_AnimationLauncher.ps + %--- view pdf + !AcroRd32 vtLatex_AnimationLauncher.pdf + + +%=================================================================== +% Matrix to a String Ordering with & intervening +%=================================================================== +function STR = Mat2StrCustom(Matr) + +R = size(Matr,1); +C = length(Matr{1,1}); + +STR = []; +for IndRow= 1:R + for IndCol = 1:C + STR = [STR num2str(Matr{IndRow,1}(IndCol)) '&']; + end + STR = [STR Matr{IndRow,2} '&']; +end +%STR = STR(1:end-1); + +%=================================================================== +% QUERY CODEBOOK +%=================================================================== +function OutVecs = FindVectorsFromCodeBook(InVecs, STRQuery) + +NPhonemes = length(STRQuery); + +NumericBookPhonemes = zeros(1,NPhonemes); + +BookOfPhonemes = InVecs(:,2); + +for iPhoneme = 1:NPhonemes, + NumericBookPhonemes(iPhoneme) = find(strcmp(BookOfPhonemes,STRQuery(iPhoneme))); +end + +OutVecs = InVecs(NumericBookPhonemes,:); +return + + + diff --git a/Master/texmf-dist/tex/latex/vocaltract/VocalTract.sty b/Master/texmf-dist/tex/latex/vocaltract/VocalTract.sty new file mode 100644 index 00000000000..356fcff07ae --- /dev/null +++ b/Master/texmf-dist/tex/latex/vocaltract/VocalTract.sty @@ -0,0 +1,928 @@ +% VocalTract.sty +% Release version 1 +%------------------------------------------------------------ +% Vocal Tract Animation package for Latex: +% - for upper and lower respiration system +% - with Matlab Interoperability +% +% Copyright: +% +% This material is subject to the LaTeX Project Public License. +% See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +% for the details of that license. +% +% Thermi, Greece, 13-03-2012 +%------------------------------------------------------------- + +% Required Packages +\usepackage{color} +\definecolor{pink}{rgb}{.7,.7,.7} + +\usepackage{multimedia,multido,animate,fp} +\usepackage{pstricks,pst-coil} +\usepackage{arrayjob,ifthen} + +% After fp +\usepackage[point]{fltpoint} + + +%%===================================================== +%% Maeda Coordinates +%%===================================================== +\@ifundefined{SpeakVec}{ +\newarray\SpeakVec +\readarray{SpeakVec}{% +%%======================================================================================== +%% 1. Jaw Position 4. Tongue Apex 7. Larynx Height 10. Nasal Cavity +%% 2. Tongue Position 5. Lip Aperture 8. Glottal Aperture 11. Phoneme Label +%% 3. Tongue Shape 6. Lip Protrusion 9. Glottal Frequency +%%======================================================================================== +%% 1 2 3 4 5 6 7 8 9 10 11 +%% JW TP TS TA LA LP LH GA FX NS +%% 3 3 3 3 3 3 3 3 3 3 Max +%% 0 0 0 0 0 0 0 0 0 0 Relax +%% -3 3 -3 -3 -3 -3 -3 -3 -3 -3 Min +%%======================================================================================== +%------------------------------------------------------------ Vowels ------------- + 0.5 &-2 & 1 &-2 & 1 & -1 & 0 & 0 & 0 & 0 &i& % 1 + 0.5 &-2 & 1 &-2 & 0 & 2 & 0 & 0 & 0 & 0 &y& % 2 (\"u) + -1 &-1 & 1 &-2 & 1 & -0.5 & 0 & 0 & 0 & 0 &e& % 3 + -1 &-1 & 1 &-2 & 0 & 2 & 0 & 0 & 0 & 0 &2& % 4 (\"o) + -1.5 & 2.5 & 0 &-0.5 & 0 & 2 & 0 & 0 & 0 & 0 &E& % 5 (\"a) + -1.5 & 1.5 & 0 & 0.5 & 0.5& -0.5 & 0 & 0 & 0 & 0 &@& % 6 (Schwa) + -1.5 & 2.5 & 0 &-0.5 & 0.5& -0.5 & 0 & 0 & 0 & 0 &a& % 7 + 0.5 & 2 & 1.5 &-2 &-1 & 1.5 & 0 & 0 & 0 & 0 &u& % 8 + -0.4 & 3.0 & 1.5 & 0 &-0.3& 0 & 0 & 0 & 0 & 0 &o& % 9 +%-------------------------------------------------------------------Unvoiced Cons.-------- + 0 & 0 & 0 & 0 &-3 & 0 & 0 &-3 & -3 & -3 &p& % 10 % UPlosives + 0 & -0.5 &-1 & 2.3 & 0 & 0 & 0 &-3 & -3 & -3 &t& % 11 + 0 & -1.5 & 3 & -3 & 0 & 0 & 0 &-3 & -3 & -3 &k& % 12 + 2 & 1 & 0 & 0 &-1.5& -2 & 0 &-3 & -3 & -3 &f& % 13 % UFricatives + 2.5 & 0 & 0 & 0.4 & 0 & 0 & 0 &-3 & -3 & -3 &s& % 14 + 0 & -1 & 3 & -3 & 0 & 0 & 0 &-3 & -3 & -3 &x& % 15 +%----------------------------------------------------------------- Voiced Cons. -------- + 0 & 0 & 0 & 0 &-3 & 0 &-1 & -1 & 0 & -3 &b& % 16 % VPlosives + 0 & -0.5 &-1 & 2.3 & 0 & 0 & 0 & -1 & 0 & -3 &d& % 17 + 0 & -1.5 & 3 & -3 & 0 & 0 & 0 & -1 & 0 & -3 &g& % 18 + 1 & 0 & 0 & 3 & 0 & 0 & 0 & -1 & 0 & 0 &r& % 19 % Rolled + 0 & -2 & 3 & 3 & 0 & 0 & 0 & -1 & 0 & 0 &l& % 20 % Lateral + 0 & 2.3 & 2.5 & -2 & 0 & 0 & 0 & -1 & 0 & 0 &R& % 21 % Approximants + 1 & 0 & 2 & 0 & 0 & 0 & 0 & -1 & 0 & 0 &j& % 22 + 2 & 1 & 0 & 0 &-1.5& -2 & 0 & -1 & 0 & 0 &v& % 23 % VFricatives + 2.5 & 0 & 0 & 0.4 & 0 & 0 & 0 & -1 & 0 & 0 &z& % 24 + 0 & 0 & 0 & 0 &-3 & -1 & 0 & -1 & 0 & 0 &m& % 25 % Nasals + 0.5 & 0 & 0 & 3 & 0 & 0 & 0 & -1 & 0 & 0 &n& % 26 +} +\dataheight=11 +\def\Nframes{27} +}{} +%-------------------------------------------------------------------------------------- +% Maeda Loading Factors for +% Tongue Larynx Lips +% A[i][0] A[i][1] A[i][2] A[i][3] s_tng[i] u_tng[i vtos[i].x vtos[i].y igd[i].x igd[i].y | A_lrx[i][0,1] s_rlx[i] u_lrx[i] | A_lip[i][0,1,2] s_lip[i] u_lip[i] +% 10 11,12 13 14 15,16,17 18 19 +\newarray\AMaeda +\readarray{AMaeda}{% + 1.000000 & 0.000000 & 0.000000 & 0.000000 & 0.293351 & 1.105280 & 0 & 0 & 0 & 0 & 1.000000 & 0.000000 & 0.293351 & 1.105280 & 1.000000 & 0.000000 & 0.000000 & 0.293351 & 1.105280 &% + -0.464047 & 0.098776 & -0.251690 & 0.228351 & 0.317448 & 4.706277 & 0.980785 &-0.195090 & 10.634367 & 5.134503 & -0.208338 & 0.262446 & 0.440889 & 1.517271 & 0.178244 & -0.395733 & 0.888897 & 0.350522 & 1.301809 &% + -0.328015 & 0.337579 & -0.283667 & 0.568234 & 0.473761 & 4.775106 & 0.980785 &-0.195090 & 10.829458 & 6.115289 & 0.127814 & 0.991798 & 0.694961 & -10.051230 & -0.154638 & 0.987971 & 0.000000 & 1.053558 & 1.440946 &% + -0.213039 & 0.485565 & -0.283533 & 0.653696 & 1.052688 & 4.239388 & 0.980785 &-0.195090 & 11.024549 & 7.096074 & -0.131840 & 0.300784 & 0.470351 & 4.289589 & -0.217332 & 0.825187 & -0.303429 & 2.268359 & 4.880673 &% + -0.302565 & 0.705432 & -0.379044 & 0.392917 & 1.026836 & 3.695193 & 0.980785 &-0.195090 & 11.219639 & 8.076859 & 0.097688 & 0.934267 & 0.701163 & -10.207126 & 0 & 0 & 0 & 0 & 0 &% + -0.327806 & 0.786897 & -0.388116 & 0.245703 & 0.891888 & 3.722520 & 0.980785 &-0.195090 & 11.414729 & 9.057644 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + -0.325065 & 0.852409 & -0.285125 & 0.176843 & 0.830590 & 3.873289 & 0.980785 &-0.195090 & 11.609819 & 10.038429 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + -0.325739 & 0.904725 & -0.142602 & 0.138558 & 0.777910 & 3.925084 & 0.980785 &-0.195090 & 11.804910 & 11.019215 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + -0.313741 & 0.926339 & 0.021042 & 0.122976 & 0.773024 & 3.775744 & 0.980785 &-0.195090 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + -0.288138 & 0.924019 & 0.131949 & 0.116762 & 0.757404 & 3.624036 & 1.000000 & 0.000000 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + -0.249008 & 0.909585 & 0.250320 & 0.112433 & 0.734461 & 3.520446 & 0.980785 & 0.195090 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + -0.196936 & 0.882236 & 0.369083 & 0.112396 & 0.706124 & 3.464362 & 0.923880 & 0.382684 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + -0.128884 & 0.830243 & 0.499894 & 0.115700 & 0.674199 & 3.461033 & 0.831470 & 0.555570 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + -0.040825 & 0.730520 & 0.651662 & 0.112048 & 0.635628 & 3.515299 & 0.707107 & 0.707107 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.073420 & 0.543080 & 0.807947 & 0.126204 & 0.600972 & 3.637658 & 0.555570 & 0.831470 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.202726 & 0.230555 & 0.919065 & 0.163735 & 0.598000 & 3.829419 & 0.382684 & 0.923880 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.298853 & -0.162541 & 0.899074 & 0.213884 & 0.657375 & 4.083451 & 0.195090 & 0.980785 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.332785 & -0.491647 & 0.748869 & 0.243163 & 0.776293 & 4.365362 & 0.000000 & 1.000000 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.349955 & -0.681313 & 0.567615 & 0.245295 & 0.890489 & 4.618332 & -0.195090 & 0.980785 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.377277 & -0.771200 & 0.410502 & 0.249425 & 0.969776 & 4.823429 & -0.382684 & 0.923879 & 12.000000 & 12.000000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.422713 & -0.804874 & 0.270513 & 0.274015 & 0.997716 & 4.905002 & -0.382684 & 0.923880 & 11.076120 & 11.617316 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.474635 & -0.797704 & 0.129324 & 0.314454 & 1.009611 & 4.802065 & -0.382684 & 0.923880 & 10.152241 & 11.234632 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.526087 & -0.746938 & -0.026201 & 0.366149 & 0.991273 & 4.581855 & -0.382684 & 0.923880 & 9.228361 & 10.851950 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.549466 & -0.643572 & -0.190005 & 0.422848 & 0.985804 & 4.317999 & -0.382684 & 0.923880 & 8.304482 & 10.469266 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.494200 & -0.504012 & -0.350434 & 0.488056 & 1.069908 & 4.076241 & -0.382683 & 0.923880 & 7.380602 & 10.086582 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% + 0.448797 & -0.417352 & -0.445410 & 0.500909 & 1.129032 & 3.856664 & -0.382684 & 0.923880 & 6.456723 & 9.703898 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &% +} +\dataheight=19 + + + + + +%--------------------------------------------------------------------------------------- +% Recall values from array +\def\RdVal#1#2#3{% +\dataheight=11 +\checkSpeakVec(#2,#3) +\edef#1{\cachedata}} + +\def\RdValM#1#2#3{% +\dataheight=19 +\checkAMaeda(#2,#3) +\edef#1{\cachedata}} + +% -- Tongue -- 1 2 3 4 5 6 7 +% {\vtngCx}{\vtngCy}{\JW}{\TP}{\TS}{\TA}{3} +\def\TongDepolarLinSys#1#2#3#4#5#6#7{ +% Maeda Linear Transformations by Factor Analysis +% vA vB vC vD +%1 = \ATongA*2 + \ATongB*3 + \ATongC*4 + \ATongD*5 +\RdValM{\ATongA}{#7}{1} +\RdValM{\ATongB}{#7}{2} +\RdValM{\ATongC}{#7}{3} +\RdValM{\ATongD}{#7}{4} +\fpMul\vA{\ATongA}{#3} +\fpMul\vB{\ATongB}{#4} +\fpMul\vC{\ATongC}{#5} +\fpMul\vD{\ATongD}{#6} +\fpAdd\v\vA\vB +\fpAdd\v\v\vC +\fpAdd\v\v\vD + %------ Depolarize -------- +\RdValM{\stng}{#7}{5} +\RdValM{\utng}{#7}{6} +\RdValM{\vtosx}{#7}{7} +\RdValM{\vtosy}{#7}{8} +\RdValM{\igdx}{#7}{9} +\RdValM{\igdy}{#7}{10} +% +% Estimate v_tng[i] from v +\fpMul\vtng{\stng}{\v} +\fpAdd\vtng\vtng{\utng} +% Estimate x1 y1 from vtos[i].x vtos[i].y igd[i].x igd[i].y +% x1 +\fpMul{#1}\vtosx\vtng +\fpAdd{#1}{#1}{\igdx} +\fpSub{#1}{20}{#1} % Reverse orientation +% y1 +\fpMul{#2}{\vtosy}\vtng +\fpAdd{#2}{#2}{\igdy} +% Tranform to Ververidis system +\LinMov2Verver{#1}{#2} +%\psdot(#1,#2) +} + + +%----- Larynx --------- +%1 i=1 (xFront) ,2 (yFront), 3(xBack),4(yBack) +%2. v = A_lrx[i][0]*p[0] + A_lrx[i][1]*p[1] +%3. v_lrx[i] = s_lrx[i]*v + u_lrx[i]; % +% +% 1 2 3 4 +% {\vlrxXorY}{\JW}{\LH}{3} % X are 2,4 Y are 3,5 +\def\LrxDepolarLinSys#1#2#3#4{ +% Maeda Linear Transformations by Factor Analysis +% vA vB +%1 = \ALrxA*2 + \ALrxB*3 +\RdValM{\ALrxA}{#4}{11} +\RdValM{\ALrxB}{#4}{12} +\fpMul\vLA{\ALrxA}{#2} +\fpMul\vLB{\ALrxB}{#3} +\fpAdd\vL\vLA\vLB +% %------ Depolarize -------- +\RdValM{\slrx}{#4}{13} +\RdValM{\ulrx}{#4}{14} +%% +%% Estimate v_tng[i] from v +\fpMul#1{\slrx}{\vL} +\fpAdd#1#1{\ulrx} + +%% if X then reverse +%% Tranform to Ververidis system +\def\dum{3} +\ifthenelse{#4=2 \or #4=4} +{\fpSub{#1}{8}{#1}\LinMov2Verver{#1}{\dum}}{\fpAdd{#1}{12}{#1}\LinMov2Verver{\dum}{#1}} +%\rput(3,#4){#1} +} + + +%-------- Lips ------- +% JW LA LP +%1. v = A_lip[i][0]*p[0] + A_lip[i][1]*p[1] + A_lip[i][2]*p[2] +%2. v_lip[i] = s_lip[i]*v + u_lip[i] % +% +% 1 2 3 4 5 +% {\vlip}{\JW}{\LA}{\LP}{3} +\def\LipDepolarLinSys#1#2#3#4#5{ +% vA vB vC +%1 = \ALipA*2 + \ALipB*3 + \ALipC*4 +\RdValM{\ALipA}{#5}{15} +\RdValM{\ALipB}{#5}{16} +\RdValM{\ALipC}{#5}{17} +\fpMul\vA{\ALipA}{#2} +\fpMul\vB{\ALipB}{#3} +\fpMul\vC{\ALipC}{#4} +\fpAdd\vLip\vA\vB +\fpAdd\vLip\vLip\vC +% %------ Depolarize -------- +\RdValM{\slip}{#5}{18} +\RdValM{\ulip}{#5}{19} +%% +%% Estimate v_tng[i] from v +\fpMul#1{\slip}{\vLip} +\fpAdd#1#1{\ulip} +% +%% if X then reverse +%% Tranform to Ververidis system +%\def\dum{3} +%\ifthenelse{#4=2 \or #4=4} +%{\fpSub{#1}{8}{#1}\LinMov2Verver{#1}{\dum}}{\fpAdd{#1}{12}{#1}\LinMov2Verver{\dum}{#1}} +%\rput(3,#5){#1} +} + + + +%-------------- Transform to Ververidis Coordinates -------- +\def\LinMov2Verver#1#2{ +% X +\fpSub{#1}{#1}{1.0465} +\fpDiv{#1}{#1}{13.1774} +\fpAdd{#1}{#1}{1.04} +% Y +\fpSub{#2}{#2}{1.8} +\fpDiv{#2}{#2}{12.3704} +\fpAdd{#2}{#2}{4.5} +} + + + + +%============= Breath Oscillation Params ==== +\def\OscAmp{0} +\newcommand{\SetOscAmp}[2]{% + \FPmul\OscAmp{#1}{0.314} + \FPadd\OscAmp{\OscAmp}{1.57} + \FPcos\OscAmp{\OscAmp} % cos(i*2pi/20 + pi/2)/2 + \FPmul\OscAmp{\OscAmp}{#2} + \UpdateRespOscillation % For Breath +} + + +\def\VarOut{0} +\def\ScaledOsc{0} +\newcommand{\SetScaledOsc}[2]{% + \FPmul{\ScaledOsc}{#1}{\OscAmp} + \FPadd{#2}{\ScaledOsc}{#2} +} + + +%========== Upper Respiration Sustem Cords +% +% Nose - Esophagus (Static) +\def\NoseBaseX{2.325} \def\NoseBaseY{6} +\def\NoseEdgeX{2.4375} \def\NoseEdgeY{6.1} +\def\NoseBoneUpX{2.28} \def\NoseBoneUpY{6.37} +\def\NoseBoneDownX{2.43} \def\NoseBoneDownY{6.15} +\def\NoseBoneInX{2.32} \def\NoseBoneInY{6.2} +\def\NasalCavFrontX{2.175} \def\NasalCavFrontY{6.4} +\def\NasalCavCeilX{1.8} \def\NasalCavCeilY{6.5} +\def\NasalCavBackX{1.35} \def\NasalCavBackY{6.4} +\def\NasalSphenoidUpX{1.35} \def\NasalSphenoidUpY{6.3} +\def\NasalSphenoidDownX{1.275} \def\NasalSphenoidDownY{6.2} +\def\NasalPortStaticUpX{1.07} \def\NasalPortStaticUpY{5.7} %1.05,5.7 +\def\NasalPortStaticDownX{1.04} \def\NasalPortStaticDownY{5.55} %1.05,5.7 +% +\def\PharynxBackUpStaticX{1.04} \def\PharynxBackUpStaticY{5.43} %1.0875,5.3 +\def\PharynxBackMiddleStaticX{1.07} \def\PharynxBackMiddleStaticY{5.14} +\def\PharynxBackDownStaticX{1.1} \def\PharynxBackDownStaticY{4.81} +% +\def\EsophagusBackX{0.9375} \def\EsophagusBackY{4.3} +\def\EsophagusFrontX{1.0875} \def\EsophagusFrontY{4.3} +\def\EsophagusPortX{1.2} \def\EsophagusPortY{4.7} %1.27,4.9 ok +% +\def\LarynxFrontX{1.35} \def\LarynxFrontY{4.3} +\def\LarynxBackX{1.2} \def\LarynxBackY{4.3} +% + +% +% Jaw and Jugular notch +\def\JugularNotchX{1.65} \def\JugularNotchY{4.2} +\def\AdamsAppleX{1.725} \def\AdamsAppleY{4.8} +\def\ThyroidX{1.7} \def\ThyroidY{4.9} +% +%Lips +\def\LipUpOutX{\LipOutX} \def\LipUpOutY{\LipUpY} +\def\LipUpInX{\LipInX} \def\LipUpInY{\LipUpY} +\def\LipDownOutX{\LipOutX} \def\LipDownOutY{\LipDownY} +\def\LipDownInX{\LipInX} \def\LipDownInY{\LipDownY} + +% Up +\def\LipUpBaseOutX{2.25} \def\LipUpBaseOutY{5.8} + +% +% Oral-Nasal Separation +\def\NasalCavAlvX{2.025} \def\NasalCavAlvY{6.05} +\def\NasalCavPalX{1.725} \def\NasalCavPalY{6.05} +\def\NasalCavVelarX{1.275} \def\NasalCavVelarY{5.9} +% + \def\NasalCavMovY{5.72} +\def\UvularX{1.31} \def\UvularY{5.73} +\def\VelarX{1.4} \def\VelarY{5.75} +\def\PalatalX{1.66} \def\PalatalY{5.85} +% +\def\PostPostAlveolarX{1.83} \def\PostPostAlveolarY{5.81} +\def\PostAlveolarX{1.95} \def\PostAlveolarY{5.725} +\def\AlveolarX{2.02} \def\AlveolarY{5.675} + + +% Epiglotis to Tongue to DownTeeth +\def\HyoidUpX{1.255} \def\HyoidUpY{4.9} +\def\HyoidDownX{1.260} \def\HyoidDownY{4.8} +\def\EpiglotisBaseX{1.275} \def\EpiglotisBaseY{5.1} +\def\EpiglotisX{1.2} \def\EpiglotisY{5.3} +\def\TongueBaseX{1.35} \def\TongueBaseY{5.1} +\def\TonguePharynxX{1.275} \def\TonguePharynxY{5.4} +% +\def\TongueUvularX{1.3125} +\def\TongueVelarX{1.5} +\def\TonguePalatalX{1.725} +\def\TonguePostAlvX{1.875} +% +\def\TongueBaseFrontX{2} \def\TongueBaseFrontY{5.3} +% Teeth +% up +\def\TeethUpBaseInX{2.1} \def\TeethUpBaseInY{5.675} +\def\TeethUpEdgeX{2.185} \def\TeethUpEdgeY{5.57} +\def\TeethUpBaseOutX{2.2125} \def\TeethUpBaseOutY{5.7} +% down +\def\TeethDownBaseInX{2.1} \def\TeethDownBaseInY{5.4} +\def\TeethDownEdgeX{2.175} \def\TeethDownEdgeY{5.5} +\def\TeethDownBaseOutX{2.2} \def\TeethDownBaseOutY{5.35} +% +\def\SubTongueSalX{2.025} \def\SubTongueSalY{5.3} + + + + +%============= LowerRespiration System Cords +\def\TracheaFrontX{1.35}\def\TracheaFrontY{4} +\def\TracheaBackX{1.2} \def\TracheaBackY{4} +% +\def\LungsChestLevelFrontX{2.1} \def\LungsChestLevelFrontY{2.5} +\def\LungsChestLevelBackX{0.45} \def\LungsChestLevelBackY{2.5} +% +\def\LungsSternLevelBackX{0.3} \def\LungsSternLevelBackY{1.2} +\def\LungsSternLevelBackXHelp{0.375} \def\LungsSternLevelBackYHelp{1.3} +% +\def\LungsSternLevelFrontX{2.1} \def\LungsSternLevelFrontY{1.2} +\def\LungsSternLevelFrontXHelp{2.1} \def\LungsSternLevelFrontYHelp{1.3} +% +\def\LungsSternLevelMiddleX{1.125} \def\LungsSternLevelMiddleY{1.5} +% +\def\SkinChestFrontX{2.25} \def\SkinChestFrontY{2.7} +% +\def\DiaphragmX{1.125} \def\DiaphragmY{1.3} + + + +%\pscustom[fillstyle=gradient,gradmidpoint=5,gradangle=45, gradbegin=white,gradend=red,showpoints=true,linecolor=black,linewidth=0pt]{ + + +%================== ANDROID ===================== +\newcommand{\BackToNoseEdge}{ +% Back +\pscurve[linearc=0.3](0,0.5)(0.15,2)(0.75,5) +% Back Head to Eyes +\pscurve[linearc=0.3](0.75,5)(0.3,6.5)(0.75,7.3)(1.125,7.5)(1.875,7.4)(2.25,7)(2.25,6.5)(\NoseBoneUpX,\NoseBoneUpY) +% Nose +\pscurve(\NoseBoneUpX,\NoseBoneUpY)(\NoseBoneDownX,\NoseBoneDownY) +} + +% Nose Edge to Lip Up +%[linearc=0.3,showpoints=false,linecolor=black,linewidth=1pt] +\newcommand{\NoseEdgeToLipUp}{ +\pscurve(\NoseBoneDownX,\NoseBoneDownY)(\NoseEdgeX,\NoseEdgeY)(\NoseBaseX,\NoseBaseY)(\LipUpBaseOutX,\LipUpBaseOutY)} + +% LipDown to JugularNotch +\newcommand{\LipDowntoJugularNotch}{ +\pscurve(\LipDownOutX,\LipDownOutY)(\ChinUpX,\ChinUpY)(\ChinMiddleX,\ChinMiddleY)(\ChinDownX,\ChinDownY)(\ThyroidX,\ThyroidY)(\AdamsAppleX,\AdamsAppleY)(\JugularNotchX,\JugularNotchY)} +% Chest +\newcommand{\Chest}{ +\pscurve[linearc=0.2](\JugularNotchX,\JugularNotchY)(\SkinChestFrontX,\SkinChestFrontY)(2.25,0.5)} + + +% Diaphragm +\newcommand{\Diaphragm}{\pscurve[linearc=1.5](0,0.5)(\DiaphragmX,\DiaphragmY)(2.25,0.5)} + +% +% +% Nose, Nasal Cavity, Nasal Port +% NasalUpperCav To Pharynx +\newcommand{\NasalCavUpToPharynx}{ +\pscurve(\NoseBoneDownX,\NoseBoneDownY)(\NoseBoneInX,\NoseBoneInY)(\NasalCavFrontX,\NasalCavFrontY)(\NasalCavCeilX,\NasalCavCeilY)(\NasalCavBackX,\NasalCavBackY)(\NasalSphenoidUpX,\NasalSphenoidUpY)(\NasalSphenoidDownX,\NasalSphenoidDownY) +(\NasalPortStaticUpX,\NasalPortStaticUpY)(\NasalPortStaticDownX,\NasalPortStaticDownY)(\PharynxBackUpStaticX,\PharynxBackUpStaticY)} +% +% Pharynx, Esophagus, EsoPort +\newcommand{\PharynxToEsophag}{ +\psline(\PharynxBackUpStaticX,\PharynxBackUpStaticY)(\PharynxBackMiddleStaticX,\PharynxBackMiddleStaticY)(\PharynxBackDownStaticX,\PharynxBackDownStaticY)% +(\EsophagusBackX,\EsophagusBackY)(\EsophagusBackX,3.5)% +(\EsophagusFrontX,3.75)(\EsophagusFrontX,\EsophagusFrontY)% +(\EsophagusPortX,\EsophagusPortY)(\ChordsJointBackX,\ChordsJointBackY)} +% +% LarynxBack, Trachea, Lungs, LarynxFront +\newcommand{\LarynxLungsChords}{ +\psline(\ChordsJointBackX,\ChordsJointBackY)(\TracheaBackX,\TracheaBackY)(\LungsChestLevelBackX,\LungsChestLevelBackY)(\LungsSternLevelBackX,\LungsSternLevelBackY) +% +\pscurve(\LungsSternLevelBackX,\LungsSternLevelBackY)(\LungsSternLevelBackXHelp,\LungsSternLevelBackYHelp)(\LungsSternLevelMiddleX,\LungsSternLevelMiddleY)(\LungsSternLevelFrontX,\LungsSternLevelFrontY) +% +\pscurve(\LungsSternLevelFrontX,\LungsSternLevelFrontY)(\LungsSternLevelFrontXHelp,\LungsSternLevelFrontYHelp)(\LungsChestLevelFrontX,\LungsChestLevelFrontY)(\TracheaFrontX,\TracheaFrontY)(\LarynxFrontX,\LarynxFrontY) +% +\psline(\LarynxFrontX,\LarynxFrontY)(\ChordsJointFrontX,\ChordsJointFrontY) +} +% +% Vocal Chords +\newcommand{\VocalChords}{% +{ +% +\FPadd\MidXChords{\ChordsJointBackX}{\ChordsJointFrontX} +\FPdiv\MidXChords{\MidXChords}{2} +\FPsub\GlotalWidth\ChordsJointFrontX\ChordsJointBackX +\FPdiv\GlotalWidth{\GlotalWidth}{2} +% +\fpAdd\ChordsJointFrontBackAveY\ChordsJointBackY\ChordsJointFrontY +\fpDiv\ChordsJointFrontBackAveY\ChordsJointFrontBackAveY{2} +% +\pscustom[fillstyle=solid,fillcolor=pink]{ +\psellipse[linewidth=0.2pt](\MidXChords,\ChordsJointFrontBackAveY)(\GlotalWidth,0.05) +\psellipse[linewidth=0.2pt](\MidXChords,\ChordsJointFrontBackAveY)(\GlotalWidth,\GlottalAperture)} +% +\psellipse*[linecolor=white,linewidth=0.2pt](\MidXChords,\ChordsJointFrontBackAveY)(\GlotalWidth,\GlottalAperture) +\psellipse[linewidth=0.2pt](\MidXChords,\ChordsJointFrontBackAveY)(\GlotalWidth,\GlottalAperture) +\FPmul\MinusFx\FX{-2} +\ifthenelse{\FX>2}{% +\pscoil[coilaspect=0,coilheight=0.7,coilwidth=0.1,coilarm=0.02,linewidth=\ChordsFrequency pt]% +(\ChordsJointBackX,\ChordsJointBackY)(\ChordsJointFrontX,\ChordsJointFrontY)}{} +}% +} +% +% Oral-Nasal Border (NoseBase, NasalFloor, OralCeil, TeethUp, LipUp +\newcommand{\OralNasalBorder}{ +\pscurve[linewidth=0.5pt](\NoseBaseX,\NoseBaseY)(\NasalCavAlvX,\NasalCavAlvY)(\NasalCavPalX,\NasalCavPalY)(\NasalCavVelarX,\NasalCavVelarY) +\pscurve[linewidth=0.5pt](\NasalCavVelarX,\NasalCavVelarY)(\NasalCavMovX,\NasalCavMovY)(\UvularX,\UvularY)(\VelarX,\VelarY)(\PalatalX,\PalatalY)(\PostPostAlveolarX,\PostPostAlveolarY)(\PostAlveolarX,\PostAlveolarY)(\AlveolarX,\AlveolarY) +\psline[linewidth=0.5pt](\AlveolarX,\AlveolarY)(\TeethUpBaseInX,\TeethUpBaseInY)(\TeethUpEdgeX,\TeethUpEdgeY)(\TeethUpBaseOutX,\TeethUpBaseOutY) +\pscurve[linewidth=0.5pt](\TeethUpBaseOutX,\TeethUpBaseOutY)(\LipUpInX,\LipUpInY)(\LipUpOutX,\LipUpOutY)(\LipUpBaseOutX,\LipUpBaseOutY)(\NoseBaseX,\NoseBaseY) +} +% +% Chords to TongueAtPharynx +\newcommand{\ChordsToTongue}{ +\pscurve[curvature=0.2 -0.5 -0.5](\ChordsJointFrontX,\ChordsJointFrontY)(\HyoidDownX,\HyoidDownY)(\HyoidUpX,\HyoidUpY)(\EpiglotisBaseX,\EpiglotisBaseY) +(\EpiglotisX,\EpiglotisY)(\TongueBaseX,\TongueBaseY)} +% +% Tongue at Pharynx to Tongue Base Front +\newcommand{\Tongue}{ +\pscurve(\TonguePharynxX,\TonguePharynxY)(\TongueUvularX,\TongueUvularY) +(\TongueVelarX,\TongueVelarY)(\TonguePalatalX,\TonguePalatalY)(\TonguePostAlvX,\TonguePostAlvY)(\TongueAlveolarX,\TongueAlveolarY)(\TongueBaseFrontX,\TongueBaseFrontY)} + +% Tongue Base Front to Down Lips +\newcommand{\TeethDownLips}{ +\psline(\TongueBaseFrontX,\TongueBaseFrontY)(\SubTongueSalX,\SubTongueSalY) +(\TeethDownBaseInX,\TeethDownBaseInY) +(\TeethDownEdgeX,\TeethDownEdgeY)(\TeethDownBaseOutX,\TeethDownBaseOutY) +\pscurve[curvature=1 0.5 -0.5](\TeethDownBaseOutX,\TeethDownBaseOutY) +(\LipDownInX,\LipDownInY)(\LipDownOutX,\LipDownOutY)} + + +%======================== +% Stomach Compartment +%======================== +\newcommand{\StomachCompartment}{ +\psline[linearc=0](0,0.5)(0,0)(2.25,0)(2.25,0.5) +\FPsub\DiaphragmYALittleSmaller\DiaphragmY{0.05} +\pscustom[fillcolor=white,fillstyle=solid]{ +\pscurve[linearc=0.1](0.9,\DiaphragmYALittleSmaller)(0.9,.7)(0.525,0.4) % Back Stomach + (1.125,0.2) % Bottom Point of Stomach + (1.725,0.4)(1.275,.7)(1.2,\DiaphragmY)} % Front Stomach + +% ---- Electrode ----- +%\psline[linecolor=gray,linewidth=1pt](1.35,\DiaphragmY)(1.35,1.9) % Up Elect Sensor +%\psline[linewidth=1pt](1.35,0.5)(1.35,\DiaphragmY) % Down Electr Sensor +} + + + + + +%======================= +% Red Flesh +%======================= + +%Begin from 0,0.5 and end there also +\newcommand{\DrawRedFlesh} +{\pscustom[fillstyle=solid,fillcolor=pink] +{ +\BackToNoseEdge +\NasalCavUpToPharynx +\PharynxToEsophag +% +% Larynx until LungsBackStern +\psline(\ChordsJointBackX,\ChordsJointBackY)(\TracheaBackX,\TracheaBackY)(\LungsChestLevelBackX,\LungsChestLevelBackY)(\LungsSternLevelBackX,\LungsSternLevelBackY) +% +% LungsBackStern to LungsFrontStern +\pscurve(\LungsSternLevelBackX,\LungsSternLevelBackY)(\LungsSternLevelBackXHelp,\LungsSternLevelBackYHelp)(\LungsSternLevelMiddleX,\LungsSternLevelMiddleY)(\LungsSternLevelFrontX,\LungsSternLevelFrontY) +% LungsFrontStern to Trachea +\pscurve(\LungsSternLevelFrontX,\LungsSternLevelFrontY)(\LungsSternLevelFrontXHelp,\LungsSternLevelFrontYHelp)(\LungsChestLevelFrontX,\LungsChestLevelFrontY)(\TracheaFrontX,\TracheaFrontY)(\LarynxFrontX,\LarynxFrontY) +% Larynx to Chords +\psline(\LarynxFrontX,\LarynxFrontY)(\ChordsJointFrontX,\ChordsJointFrontY) +% Chords to Epiglotis +\pscurve[curvature=0.2 -0.5 -0.5](\ChordsJointFrontX,\ChordsJointFrontY)(\HyoidDownX,\HyoidDownY)(\HyoidUpX,\HyoidUpY)(\EpiglotisBaseX,\EpiglotisBaseY)(\EpiglotisX,\EpiglotisY)(\TongueBaseX,\TongueBaseY) +%TongueBase to TongueFront +\Tongue +% Tongue Front to Lips Down +\TeethDownLips +% Lips Down to Jugular Notch +\LipDowntoJugularNotch +% Jugular Notch to Chest to Stern +\Chest +% Stern Diaphragm to Back +\pscurve[linearc=1.5](2.25,0.5)(\DiaphragmX,\DiaphragmY)(0,0.5) +} +} + + +\newcommand{\DrawRedFleshOralNasalBorder} +{\pscustom[fillstyle=solid,fillcolor=pink,linewidth=0.5pt] +{ +\OralNasalBorder +}} + +\newcommand{\DrawRedFleshStomach} +{\pscustom[fillstyle=solid,fillcolor=pink] +{\Diaphragm +\psline[linearc=0](2.25,0.5)(2.25,0)(0,0)(0,0.5) +}} + +%=============================== +% Update Respiration Oscillation +%================================ +\newcommand{\UpdateRespOscillation}{ + \SetScaledOsc{-0.2}{\LungsChestLevelFrontX} + \SetScaledOsc{0.1}{\LungsChestLevelBackX} + \SetScaledOsc{0.2}{\LungsSternLevelBackX} + \SetScaledOsc{0.4}{\LungsSternLevelBackY} + \SetScaledOsc{0.2}{\LungsSternLevelBackXHelp} + \SetScaledOsc{0.4}{\LungsSternLevelBackYHelp} + \SetScaledOsc{-0.2}{\LungsSternLevelFrontX} + \SetScaledOsc{0.3}{\LungsSternLevelFrontY} + \SetScaledOsc{-0.2}{\LungsSternLevelFrontXHelp} + \SetScaledOsc{0.3}{\LungsSternLevelFrontYHelp} + \SetScaledOsc{0.4}{\LungsSternLevelMiddleY} + \SetScaledOsc{0.4}{\LungsSternLevelMiddleY} + \SetScaledOsc{-0.2}{\SkinChestFrontX} + \SetScaledOsc{0.6}{\DiaphragmY} +} + + +%\rput(0,0){\DiaphragmYLower} + +%============================================= +% Update Vocal Tract from File +%============================================= +\newcommand{\UpdateVocalTract}[1]{ +\RdVal{\JW}{#1}{1} +\RdVal{\TP}{#1}{2} +\RdVal{\TS}{#1}{3} +\RdVal{\TA}{#1}{4} +\RdVal{\LA}{#1}{5} +\RdVal{\LP}{#1}{6} +\RdVal{\LH}{#1}{7} +\RdVal{\GA}{#1}{8} +\RdVal{\FX}{#1}{9} +\RdVal{\NS}{#1}{10} +%% Linear Transfroms of Coordinates from Maeda to Ververidis +%% [-3,3] to [1.05,1.2] +%%1 % 3 % 5 % 7 %9 +%%F0 %LA % NC || %UV %VE %PA %PsAy %ALx %ALy || LOx LIx LUy LDy || GA +%%----------------------------------------------------------------------------------- +%%0 4.5 1.09 || 5.45 5.6 5.65 5.65 2.025 5.5 || 2.250 2.197 5.58 5.45 || 0 Min (Open) +%%1 4.8 1.20 || 6.15 5.78 5.84 5.83 2.175 5.68|| 2.360 2.287 5.65 5.6 || 0.04 Max (Closed) +%-- \NasalCavMovX +\fpAdd\NSb\NS{3} +\fpDiv{\NSb}{\NSb}{6} +\fpMul{\NSb}{\NSb}{0.15} +\fpAdd{\NasalCavMovX}{\NSb}{1.09} +%-- \ChordsFrequency +\fpAdd\FX\FX{3} +\fpDiv\ChordsFrequency\FX{6} +%-- \GlottalAperture +\fpMul\GAb\GA{-1} +\fpAdd\GAb\GAb{3} +\fpDiv{\GAb}{\GAb}{6} +\fpMul{\GlottalAperture}{\GAb}{0.025} +%-- These are expressed as a linear transformation of the JW,TP,TS,TA,LA,LP,LH + +% This is the way for the tongue + +% C is Hyoid Down +\TongDepolarLinSys{\HyoidDownX}{\HyoidDownY}{\JW}{\TP}{\TS}{\TA}{2} +% D is Hyoid Up +\TongDepolarLinSys{\HyoidUpX}{\HyoidUpY}{\JW}{\TP}{\TS}{\TA}{3} +% D is EpiglotisBase +%\TongDepolarLinSys{\vtngEx}{\vtngEy}{\JW}{\TP}{\TS}{\TA}{4} +\def\EpiglotisBaseX{\HyoidUpX} +\def\EpiglotisBaseY{\HyoidUpY} +%\TongDepolarLinSys{\vtngFx}{\vtngFy}{\JW}{\TP}{\TS}{\TA}{5} +% G is TongueBase +\TongDepolarLinSys{\TongueBaseX}{\TongueBaseY}{\JW}{\TP}{\TS}{\TA}{6} +% H is Tongue Pharynx +\TongDepolarLinSys{\TonguePharynxX}{\TonguePharynxY}{\JW}{\TP}{\TS}{\TA}{7} +%\psdot[linecolor=blue,linewidth=4pt](\TonguePharynxX,\TonguePharynxY) +% I is Epiglotis (x,y are a bit reduced) +\TongDepolarLinSys{\EpiglotisXa}{\EpiglotisYa}{\JW}{\TP}{\TS}{\TA}{8} +\fpSub\EpiglotisX\EpiglotisXa{0.03} +\fpSub\EpiglotisY\EpiglotisYa{0.1} +%\psdot[linecolor=blue](\EpiglotisX,\EpiglotisY) +%\TongDepolarLinSys{\vtngJx}{\vtngJy}{\JW}{\TP}{\TS}{\TA}{9} +%\TongDepolarLinSys{{\vtngKy}{{\vtngKy}{\JW}{\TP}{\TS}{\TA}{10} +%\TongDepolarLinSys{\vtngLx}{\vtngLy}{\JW}{\TP}{\TS}{\TA}{11} +% M is Uvular +\TongDepolarLinSys{\TongueUvularX}{\TongueUvularY}{\JW}{\TP}{\TS}{\TA}{12} +%\psdot[linecolor=blue](\TongueUvularX,\TongueUvularY) +%\TongDepolarLinSys{\vtngNx}{\vtngNy}{\JW}{\TP}{\TS}{\TA}{13} +%\TongDepolarLinSys{\vtngOx}{\vtngOy}{\JW}{\TP}{\TS}{\TA}{14} +% P is velar +\TongDepolarLinSys{\TongueVelarX}{\TongueVelarY}{\JW}{\TP}{\TS}{\TA}{15} +%\psdot[linecolor=blue](\TongueVelarX,\TongueVelarY) +%\TongDepolarLinSys{\vtngQx}{\vtngQy}{\JW}{\TP}{\TS}{\TA}{16} +%\TongDepolarLinSys{\vtngRx}{\vtngRy}{\JW}{\TP}{\TS}{\TA}{17} +%\TongDepolarLinSys{\vtngSx}{\vtngSy}{\JW}{\TP}{\TS}{\TA}{18} +% T is Palatal +\TongDepolarLinSys{\TonguePalatalX}{\TonguePalatalY}{\JW}{\TP}{\TS}{\TA}{19} %\def\TonguePalatalY{5.65} +%\psdot[linecolor=blue](\TonguePalatalX,\TonguePalatalY) +%\TongDepolarLinSys{\vtngUx}{\vtngUy}{\JW}{\TP}{\TS}{\TA}{20} +%\TongDepolarLinSys{\vtngVx}{\vtngVy}{\JW}{\TP}{\TS}{\TA}{21} +% W is TonguePostAlv +\TongDepolarLinSys{\TonguePostAlvX}{\TonguePostAlvY}{\JW}{\TP}{\TS}{\TA}{22} +%\psdot[linecolor=blue](\TonguePostAlvX,\TonguePostAlvY) +\TongDepolarLinSys{\vtngXx}{\vtngXy}{\JW}{\TP}{\TS}{\TA}{23} +\TongDepolarLinSys{\vtngYx}{\vtngYy}{\JW}{\TP}{\TS}{\TA}{24} +% Z is TongueAlveolar +\TongDepolarLinSys{\TongueAlveolarX}{\TongueAlveolarY}{\JW}{\TP}{\TS}{\TA}{25} +%\psdot[linecolor=blue](\TongueAlveolarX,\TongueAlveolarY) +%\TongDepolarLinSys{\vtngPhix}{\vtngPhiy}{\JW}{\TP}{\TS}{\TA}{26} + +%---------- Chord Joint Front and Back --------- +\LrxDepolarLinSys{\ChordsJointFrontX}{\JW}{\LH}{2} +\LrxDepolarLinSys{\ChordsJointFrontY}{\JW}{\LH}{3} +\LrxDepolarLinSys{\ChordsJointBackX}{\JW}{\LH}{4} +\LrxDepolarLinSys{\ChordsJointBackY}{\JW}{\LH}{5} +%------------ Lips -------------------------------- +\LipDepolarLinSys{\vlipA}{\JW}{\LA}{\LP}{2} + +\fpDiv\LAVerver\LA{3} % Verver here + +\LipDepolarLinSys{\vlipB}{\JW}{\LAVerver}{\LP}{3} +\LipDepolarLinSys{\vlipC}{\JW}{\LA}{\LP}{4} + +\def\LipInX{3.65} % In X +\fpSub\LipInX{20}\LipInX +\def\Dumm{0} +\LinMov2Verver{\LipInX}{\Dumm} + +\def\LipUpY{15.18} % Up Y +\LinMov2Verver{\Dumm}{\LipUpY} + +\def\LipOutX{3.65} % Out X +\fpSub\LipOutX\LipOutX{\vlipA} +\fpSub\LipOutX{20}\LipOutX +\LinMov2Verver{\LipOutX}{\Dumm} + +\fpSub\LipDownY{15.18}{\vlipB} % Down Y +\LinMov2Verver{\Dumm}{\LipDownY} + +%vlip[1] = 1.3 +%vlip[2] = 1.44 +%vlip[3] = 4.88 +%----------------- JAW Components ---------- + +\fpAdd\JawRadiiY\JW{-3} +\fpMul\JawRadiiY\JW{0.015} + +\def\ChinDownX{2.25} \fpAdd\ChinDownY{5.1}\JawRadiiY +\def\ChinMiddleX{2.325} \fpAdd\ChinMiddleY{5.2}\JawRadiiY +\def\ChinUpX{2.25} \fpAdd\ChinUpY{5.3}\JawRadiiY +\def\LipDownBaseOutX{2.25} \fpAdd\LipDownBaseOutY{5.4}\JawRadiiY + + +\def\TeethDownBaseInX{2.1} \fpAdd\TeethDownBaseInY{5.4}\JawRadiiY +\def\TeethDownEdgeX{2.175} \fpAdd\TeethDownEdgeY{5.5}\JawRadiiY +\def\TeethDownBaseOutX{2.2} \fpAdd\TeethDownBaseOutY{5.35}\JawRadiiY +% +\def\SubTongueSalX{2.025} \fpAdd\SubTongueSalY{5.3}\JawRadiiY + + +% +\BackToNoseEdge +\NasalCavUpToPharynx +\PharynxToEsophag +\LarynxLungsChords +\Diaphragm +\Chest +\LipDowntoJugularNotch +% +\NoseEdgeToLipUp +\OralNasalBorder +% +\ChordsToTongue + +\Tongue +\TeethDownLips +% +\DrawRedFlesh +\DrawRedFleshOralNasalBorder +\DrawRedFleshStomach +} + +%======================================= +% Plot dots Movable Parts +%======================================= +\newcommand{\PlotDotsVocal}{ +\uput[45](\ChordsJointBackX,\ChordsJointBackY){\scriptsize 1.Freq.} + +\rput[c](\ChordsJointFrontX,\ChordsJointFrontY){$\bullet$} +\uput[320](\ChordsJointFrontX,4.7){\scriptsize 2.Larynx Height} + +\rput[c](\NasalCavMovX,\NasalCavMovY){$\bullet$} +\uput[40](\NasalCavMovX,\NasalCavMovY){\scriptsize 3.NasalCav} + +\rput[c](\TongueUvularX,\TongueUvularY){$\bullet$} +\uput[300](\TongueUvularX,\TongueUvularY){\scriptsize 4.Uvular} + +\rput[c](\TongueVelarX,\TongueVelarY){$\bullet$} +\uput[270](\TongueVelarX,\TongueVelarY){\scriptsize 5.Velar} + +\rput[c](\TonguePalatalX,\TonguePalatalY){$\bullet$} +\uput[270](\TonguePalatalX,\TonguePalatalY){\scriptsize 6.Palatal} + +\rput[c](\TonguePostAlvX,\TonguePostAlvY){$\bullet$} +\uput[100](\TonguePostAlvX,\TonguePostAlvY){\scriptsize 7.PostAlv} + +\rput[c](\TongueAlveolarX,\TongueAlveolarY){$\bullet$} +\uput[20](\TongueAlveolarX,\TongueAlveolarY){\scriptsize 8.Alveolar} + +\rput[c](\LipUpOutX,\LipUpOutY){$\bullet$} +\uput[0](\LipUpOutX,\LipUpOutY){\scriptsize 9.LipUpOut} +\rput[c](\LipDownOutX,\LipDownOutY){$\bullet$} +\uput[0](\LipDownOutX,\LipDownOutY){\scriptsize 10.LipDownOut} + +\rput[c](\LipUpInX,\LipUpInY){$\bullet$} +\uput[90](\LipUpInX,\LipUpInY){\scriptsize 11.LipUpIn} +\rput[c](\LipDownInX,\LipDownInY){$\bullet$} +\uput[270](\LipDownInX,\LipDownInY){\scriptsize 12.LipDownIn}} + + +%============================================ +% Show Phonemes German +%============================================ +\newcommand{\ShowPhonemesGerman}[1]{ +\RdVal{\PhonemeLabel}{#1}{11} +\parbox{2cm}{\Large\PhonemeLabel}} + + +%============================================ +% Show Red Pressure +%============================================ + +\newcommand\ShowPressure[1]{% +\RdVal{\PhonemeLabel}{#1}{11} +% p +\ifthenelse{\equal{\PhonemeLabel}{p}\or\equal{\PhonemeLabel}{b}}{\pscustom[fillcolor=red,fillstyle=solid]{% +%% Chords to Tongue Base +\ChordsToTongue +%% Tongue at Pharynx to Tongue Base Front +\Tongue +% Tongue Base Front to Down Lips In +\psline(\TongueBaseFrontX,\TongueBaseFrontY)(\SubTongueSalX,\SubTongueSalY) +(\TeethDownBaseInX,\TeethDownBaseInY) +(\TeethDownEdgeX,\TeethDownEdgeY)(\TeethDownBaseOutX,\TeethDownBaseOutY) +\pscurve(\TeethDownBaseOutX,\TeethDownBaseOutY) +(\LipDownInX,\LipDownInY) +% LipUpIn to TeethBaseOut +\pscurve(\LipUpInX,\LipUpInY)(\TeethUpBaseOutX,\TeethUpBaseOutY) +% TeethBaseOut to Alveolar +\psline(\TeethUpBaseOutX,\TeethUpBaseOutY)(\TeethUpEdgeX,\TeethUpEdgeY)(\TeethUpBaseInX,\TeethUpBaseInY)(\AlveolarX,\AlveolarY) +% NasalCavMov to Alveolar +\pscurve(\AlveolarX,\AlveolarY)(\PostAlveolarX,\PostAlveolarY)(\PostPostAlveolarX,\PostPostAlveolarY)(\PalatalX,\PalatalY)(\VelarX,\VelarY)(\UvularX,\UvularY)(\NasalCavMovX,\NasalCavMovY) +% NCavPort to Pharynx +\psline(\NasalCavMovX,\NasalCavMovY)(\NasalPortStaticUpX,\NasalPortStaticUpY) +(\NasalPortStaticDownX,\NasalPortStaticDownY)(\PharynxBackUpStaticX,\PharynxBackUpStaticY) +% +% Pharynx, Esophagus, EsoPort +\PharynxToEsophag +% LarynxBack, Trachea, Lungs, LarynxFront +\LarynxLungsChords +}}{} +% t +\ifthenelse{\equal{\PhonemeLabel}{t} \or \equal{\PhonemeLabel}{d}}{ +\pscustom[fillcolor=red,fillstyle=solid]{% +%% Chords to Tongue Base +\ChordsToTongue +%% Tongue at Pharynx to Tongue Base Front +\pscurve(\TonguePharynxX,\TonguePharynxY)(\TongueUvularX,\TongueUvularY) +(\TongueVelarX,\TongueVelarY)(\TonguePalatalX,\TonguePalatalY)(\TonguePostAlvX,\TonguePostAlvY)(\TongueAlveolarX,\TongueAlveolarY) +% +\pscurve(\AlveolarX,\AlveolarY)(\PostAlveolarX,\PostAlveolarY) +(\PostPostAlveolarX,\PostPostAlveolarY)(\PalatalX,\PalatalY) +(\VelarX,\VelarY)(\UvularX,\UvularY)(\NasalCavMovX,\NasalCavMovY) +% NCavPort to Pharynx +\psline(\NasalCavMovX,\NasalCavMovY)(\NasalPortStaticUpX,\NasalPortStaticUpY) +(\NasalPortStaticDownX,\NasalPortStaticDownY)(\PharynxBackUpStaticX,\PharynxBackUpStaticY) +(\PharynxBackMiddleStaticX,\PharynxBackMiddleStaticY)(\PharynxBackDownStaticX,\PharynxBackDownStaticY) +% Pharynx, Esophagus, EsoPort +\PharynxToEsophag +% LarynxBack, Trachea, Lungs, LarynxFront +\LarynxLungsChords +}}{} +% +%k +\ifthenelse{\equal{\PhonemeLabel}{k} \or \equal{\PhonemeLabel}{g}}{\pscustom[fillcolor=red,fillstyle=solid]{% +%% Chords to Tongue Base +\ChordsToTongue +%% Tongue at Pharynx to Tongue Base Front +\pscurve(\TonguePharynxX,\TonguePharynxY)(\TongueUvularX,\TongueUvularY) +(\TongueVelarX,\TongueVelarY) +% +\pscurve(\VelarX,\VelarY)(\UvularX,\UvularY)(\NasalCavMovX,\NasalCavMovY) +% NCavPort to Pharynx +\psline(\NasalCavMovX,\NasalCavMovY)(\NasalPortStaticUpX,\NasalPortStaticUpY)(\NasalPortStaticDownX,\NasalPortStaticDownY) +(\PharynxBackUpStaticX,\PharynxBackUpStaticY) +% Pharynx, Esophagus, EsoPort +\PharynxToEsophag +% LarynxBack, Trachea, Lungs, LarynxFront +\LarynxLungsChords +}}{} +% +} + +%========================================= +% Show Linear Vocal Tube +%========================================= +\newcommand\ShowLinearTubes[1]{ +% ChordsFront to DownLips +\psline[linecolor=blue,showpoints=true](\ChordsJointFrontX,\ChordsJointFrontY)(\HyoidDownX,\HyoidDownY) +(\HyoidUpX,\HyoidUpY)(\EpiglotisBaseX,\EpiglotisBaseY)(\EpiglotisX,\EpiglotisY)(\TonguePharynxX,\TonguePharynxY) +(\TongueUvularX,\TongueUvularY)(\TongueVelarX,\TongueVelarY)(\TonguePalatalX,\TonguePalatalY) +(\TonguePostAlvX,\TonguePostAlvY)(\TongueAlveolarX,\TongueAlveolarY)(\SubTongueSalX,\SubTongueSalY) +(\TeethDownBaseInX,\TeethDownBaseInY)(\TeethDownEdgeX,\TeethDownEdgeY)(\LipDownInX,\LipDownInY)(\LipDownOutX,\LipDownOutY) +% ChordsBack to NPortStatic +\psline[linecolor=blue,showpoints=true](\ChordsJointBackX,\ChordsJointBackY)(\EsophagusPortX,\EsophagusPortY) +(\PharynxBackDownStaticX,\PharynxBackDownStaticY) +(\PharynxBackMiddleStaticX,\PharynxBackMiddleStaticY) +(\PharynxBackUpStaticX,\PharynxBackUpStaticY) +(\NasalPortStaticDownX,\NasalPortStaticDownY) +(\NasalPortStaticUpX,\NasalPortStaticUpY) +% +%NPortStatic to Nose +%\ifthenelse{#2=1.2}{% +\psline[linecolor=blue,showpoints=true](\NasalPortStaticDownX,\NasalPortStaticDownY)(\NasalPortStaticUpX,\NasalPortStaticUpY)(\NasalSphenoidDownX,\NasalSphenoidDownY)(\NasalSphenoidUpX,\NasalSphenoidUpY)(\NasalCavBackX,\NasalCavBackY)(\NasalCavCeilX,\NasalCavCeilY)(\NasalCavFrontX,\NasalCavFrontY)(\NoseBoneInX,\NoseBoneInY)(\NoseBoneDownX,\NoseBoneDownY)%}{} +% Nose to NCavPort To Upper Lips +\psline[linecolor=blue,showpoints=true](\NoseBaseX,\NoseBaseY)(\NasalCavAlvX,\NasalCavAlvY)(\NasalCavPalX,\NasalCavPalY)(\NasalCavVelarX,\NasalCavVelarY)(\NasalCavMovX,\NasalCavMovY)(\UvularX,\UvularY)(\VelarX,\VelarY)(\PalatalX,\PalatalY)(\PostPostAlveolarX,\PostPostAlveolarY)(\PostAlveolarX,\PostAlveolarY)(\AlveolarX,\AlveolarY)(\TeethUpBaseInX,\TeethUpBaseInY)(\TeethUpEdgeX,\TeethUpEdgeY)%(\TeethUpBaseOutX,\TeethUpBaseOutY) +(\LipUpInX,\LipUpInY)(\LipUpOutX,\LipUpOutY) +} + +%========================================= +% Show CrossSection Areas +%========================================= +\newcommand\ShowParameters{% +%Lines +% 1. JW: Jaw Position +\rput[l](1.8 ,4.8 ){1} +% 2. TP: Tongue Position +\rput[l](1.2 ,5){2} +% 3. TS: Tongue Shape +\rput[l](1.4 ,5){3} +% 4. TA: Tongue Apex +\rput[l](2 ,5.8){4} +%% 5. LA: LIPS APERTURE +%\psline[linecolor=green,showpoints=true](\LipOutX,\LipDownY)(\LipOutX,\LipUpY) +\rput[t](\LipOutX,\LipUpY){5} +%%% 6. LP: LIPS PROTRUSION +%\psline[linecolor=green,showpoints=true](\LipDownInX,\LipDownInY)(\LipDownOutX,\LipDownOutY) +\rput[lt](\LipDownOutX,\LipDownOutY){6} +%%% 7. LH: LARYNX HEIGHT +%\psline[linecolor=green,showpoints=true](\ChordsJointFrontX,\ChordsJointFrontY)(\HyoidDownX,\HyoidDownY) +%%% 8. GA: Glottis Aperture +%%% 9. FX: Fund. Frequency +\rput[l](\ChordsJointFrontX,\ChordsJointFrontY){7,8,9} +%%% 10. NS: Nasal Cavity +%\psline[linecolor=green,showpoints=true](\NasalCavMovX,\NasalCavMovY)(\NasalPortStaticUpX,\NasalPortStaticUpY) +\rput[rb](\NasalPortStaticUpX,\NasalPortStaticUpY){10\hspace{0.75cm}} +% +% +\rput[l](0.75,1.7){\parbox{5cm}{1. JW: Jaw Position = \JW \\ + 2. TP: Tongue Position = \TP \\ + 3. TS: Tongue Shape = \TS \\ + 4. TA: Tongue Apex = \TA \\ + 5. LA: Lips Aperture = \LA \\ + 6. LP: Lips Protrusion = \LP \\ + 7. LH: Larynx Heigh = \LH \\ + 8. GA: Glottis Aperture= \GA \\ + 9. FX: Fund. Frequency = \FX \\ + 10. NS: Nasal Cavity = \NS}} +}
\ No newline at end of file diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 8c7dfe31280..95b73e3ab93 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -423,7 +423,7 @@ my @TLP_working = qw( varsfromjobname varwidth vaucanson-g velthuis venn venturisadf verbasef verbatimbox verbatimcopy verbdef verbments verse version versions vertbars - vhistory visualfaq vmargin vntex volumes vpe vruler vwcol + vhistory visualfaq vmargin vntex vocaltract volumes vpe vruler vwcol wadalab wallpaper warning warpcol was widetable williams wnri wnri-latex wordlike wrapfig wsuipa diff --git a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc index d44cdc333a1..67b50112d69 100644 --- a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc @@ -1,5 +1,9 @@ category Collection shortdesc PSTricks packages +# +depend collection-basic +depend collection-genericrecommended +# depend auto-pst-pdf depend bclogo depend makeplot @@ -82,5 +86,4 @@ depend pstricks-add depend pstricks_calcnotes depend uml depend vaucanson-g -depend collection-basic -depend collection-genericrecommended +depend vocaltract diff --git a/Master/tlpkg/tlpsrc/vocaltract.tlpsrc b/Master/tlpkg/tlpsrc/vocaltract.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/vocaltract.tlpsrc |