haskore 0.1.0.2 → 0.1.0.3
raw patch · 12 files changed
+1834/−12 lines, 12 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Makefile +3/−2
- haskore.cabal +8/−1
- src/Doc/Pics/equiv.eps +423/−0
- src/Doc/Pics/haskore.tex +133/−0
- src/Doc/Pics/midi.tex +48/−0
- src/Doc/Pics/poly.eps +1068/−0
- src/Doc/Tutorial.bbl +113/−0
- src/Doc/Tutorial.tex +26/−7
- src/Haskore.lhs +1/−1
- src/Haskore/Interface/MIDI/Write.lhs +1/−1
- src/Test/CSound/Makefile +2/−0
- src/Test/MIDI/Makefile +8/−0
Makefile view
@@ -96,9 +96,10 @@ TEX_FILES = $(patsubst %, src/Doc/%, \- Tutorial.tex Discussion.tex Introduction.tex Macros.tex Related.tex)+ Tutorial.tex Discussion.tex Introduction.tex Macros.tex Related.tex \+ Pics/haskore.tex Pics/midi.tex) -PICS = equiv haskore midi poly+PICS = equiv poly PDF_PICS = $(patsubst %, src/Doc/Pics/%.pdf, $(PICS))
haskore.cabal view
@@ -1,5 +1,5 @@ Name: haskore-Version: 0.1.0.2+Version: 0.1.0.3 License: GPL License-File: LICENSE Author: Paul Hudak <paul.hudak@yale.edu>, Henning Thielemann@@ -23,6 +23,13 @@ src/Doc/Discussion.tex src/Doc/Introduction.tex src/Doc/Tutorial.tex+ src/Doc/Tutorial.bbl+ src/Doc/Pics/equiv.eps+ src/Doc/Pics/haskore.tex+ src/Doc/Pics/midi.tex+ src/Doc/Pics/poly.eps+ src/Test/CSound/Makefile+ src/Test/MIDI/Makefile Source-Repository head type: darcs
+ src/Doc/Pics/equiv.eps view
@@ -0,0 +1,423 @@+%!PS-Adobe-2.0 EPSF-2.0+%%Title: +%%Creator: Diagram+%%CreationDate: Thu Sep 8 10:36:49 1994+%%For: hudak+%%DocumentFonts: (atend)+%%Pages: 0 0+%%BoundingBox: 0 0 236 51+%%NXNextStepVersion: 3.0+%%EndComments++%%BeginProcSet: /usr/lib/NextStep/printPackage.ps 3.0+%!+% NeXT Printing Package+% Version: 3.1+% Copyright: 1988, NeXT, Inc.++/__NXdef{1 index where{pop pop pop}{def}ifelse}bind def+/__NXbdef{1 index where{pop pop pop}{bind def}ifelse}bind def+/UserObjects 10 array __NXdef+/defineuserobject{+ exch dup 1 add dup UserObjects length gt{+ array dup 0 UserObjects putinterval+ /UserObjects exch def+ }{pop}ifelse UserObjects exch 3 -1 roll put+}__NXbdef+/undefineuserobject{UserObjects exch null put}__NXbdef+/execuserobject{UserObjects exch get exec}__NXbdef+/__NXRectPath{4 2 roll moveto 1 index 0 rlineto+0 exch rlineto neg 0 rlineto closepath}__NXbdef+/__NXProcessRectArgs{+ 1 index type /arraytype eq{+ exch 0 4 2 index length 1 sub{+ dup 3 add 1 exch{1 index exch get exch}for+ 5 1 roll 5 index exec+ }for pop pop+ }{exec}ifelse+}__NXbdef+/rectfill{gsave newpath {__NXRectPath fill} __NXProcessRectArgs grestore}__NXbdef+/rectclip{newpath {__NXRectPath} __NXProcessRectArgs clip newpath}__NXbdef+/rectstroke{+ gsave newpath dup type /arraytype eq{dup length 6 eq}{false}ifelse{+ {gsave __NXRectPath null concat stroke grestore}+ dup length array cvx copy dup 2 4 -1 roll put __NXProcessRectArgs+ }{{__NXRectPath stroke} __NXProcessRectArgs}ifelse grestore+}__NXbdef+/_NXLevel2 systemdict /languagelevel known {languagelevel 2 ge}{false}ifelse __NXdef+/xyshow{+ 0 1 3 index length 1 sub{+ currentpoint 4 index 3 index 1 getinterval show+ 3 index 3 index 2 mul 1 add get add exch+ 3 index 3 index 2 mul get add exch moveto pop+ }for pop pop+}__NXbdef+/xshow{+ 0 1 3 index length 1 sub{+ currentpoint 4 index 3 index 1 getinterval show+ exch 3 index 3 index get add exch moveto pop+ }for pop pop+}__NXbdef+/yshow{+ 0 1 3 index length 1 sub{+ currentpoint 4 index 3 index 1 getinterval show+ 3 index 3 index get add moveto pop+ }for pop pop+}__NXbdef+/arct{arcto pop pop pop pop}__NXbdef+/setbbox{pop pop pop pop}__NXbdef+/ucache{}__NXbdef+/ucachestatus{mark 0 0 0 0 0}__NXbdef+/setucacheparams{cleartomark}__NXbdef+/uappend{systemdict begin cvx exec end}__NXbdef+/ueofill{gsave newpath uappend eofill grestore}__NXbdef+/ufill{gsave newpath uappend fill grestore}__NXbdef+/ustroke{+ gsave newpath dup length 6 eq+ {exch uappend concat}{uappend}ifelse+ stroke grestore+}__NXbdef+/__NXustrokepathMatrix dup where {pop pop}{matrix def}ifelse+/ustrokepath{+ newpath dup length 6 eq{+ exch uappend __NXustrokepathMatrix currentmatrix exch concat+ strokepath setmatrix+ }{uappend strokepath}ifelse+} __NXbdef+/upath{+ [exch {/ucache cvx}if pathbbox /setbbox cvx+ {/moveto cvx}{/lineto cvx}{/curveto cvx}{/closepath cvx}pathforall]cvx+} __NXbdef+/setstrokeadjust{pop}__NXbdef+/currentstrokeadjust{false}__NXbdef+/selectfont{exch findfont exch+dup type /arraytype eq {makefont}{scalefont}ifelse setfont}__NXbdef+/_NXCombineArrays{+ counttomark dup 2 add index dup length 3 -1 roll {+ 2 index length sub dup 4 1 roll 1 index exch 4 -1 roll putinterval exch+ }repeat pop pop pop+}__NXbdef+/flushgraphics{}def+/setwindowtype{pop pop}def+/currentwindowtype{pop 0}def+/setalpha{pop}def+/currentalpha{1.0}def+/hidecursor{}def+/obscurecursor{}def+/revealcursor{}def+/setcursor{4 {pop}repeat}bind def+/showcursor{}def+/NextStepEncoding where not{+/NextStepEncoding StandardEncoding 256 array copy def+0 [129/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/Ccedilla/Egrave+/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis+/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/Ugrave/Uacute+/Ucircumflex/Udieresis/Yacute/Thorn/mu/multiply/divide/copyright+176/registered 181/brokenbar 190/logicalnot 192/onesuperior 201/twosuperior+204/threesuperior 209/plusminus/onequarter/onehalf/threequarters/agrave+/aacute/acircumflex/atilde/adieresis/aring/ccedilla/egrave/eacute+/ecircumflex/edieresis/igrave 226/iacute 228/icircumflex/idieresis/eth+/ntilde 236/ograve/oacute/ocircumflex/otilde/odieresis 242/ugrave/uacute+/ucircumflex 246/udieresis/yacute 252/thorn/ydieresis]+{dup type /nametype eq+ {NextStepEncoding 2 index 2 index put pop 1 add}{exch pop}ifelse+}forall pop+/NextStepEncoding NextStepEncoding readonly def+/_NXfstr 128 string dup 0 (_NX) putinterval def+/_NXfindfont /findfont load def+/findfont{+ % Because we can never let NextStepEncoding get into+ % SharedFontDirectory, we cannot reencode a font to NextStepEncoding+ % if we are in shared mode. So if currentshared is true,+ % we call the normal findfont and return that+ /currentshared where {pop currentshared} {false} ifelse+ {_NXfindfont}+ {dup _NXfstr 3 125 getinterval cvs length 3 add _NXfstr 0 3 -1 roll+ getinterval cvn exch FontDirectory 2 index known + {pop FontDirectory exch get}+ {_NXfindfont dup /Encoding get StandardEncoding eq+ { dup length dict exch+ {1 index /FID ne {2 index 3 1 roll put}{pop pop}ifelse}forall+ dup /Encoding NextStepEncoding put definefont+ }{exch pop} ifelse+ }ifelse+ }ifelse+}bind def+}{pop}ifelse+/_NXImageString {/__NXImageString where{pop}{/__NXImageString 4000 string __NXdef}ifelse __NXImageString}__NXbdef+/_NXDoImageOp{+ 3 dict begin /parr 5 array def 1 index{dup}{1}ifelse /chans exch def+ chans 2 add 2 roll parr 0 chans getinterval astore pop+ 5 index 4 index mul 2 index{1 sub 8 idiv 1 add mul}{mul 1 sub 8 idiv 1 add}ifelse+ 4 index mul /totbytes exch def pop exch pop+ gsave matrix invertmatrix concat 0.5 setgray 0 0 4 2 roll rectfill grestore+ {0 1 chans 1 sub{parr exch get exec length totbytes exch sub /totbytes exch def}for totbytes 0 le{exit}if}loop end+}__NXbdef+/alphaimage{1 add _NXDoImageOp}def+_NXLevel2{ + /NXCalibratedRGBColorSpace where{pop}{+ /NXCalibratedRGBColorSpace+ {mark /NXCalibratedRGB /ColorSpace findresource exch pop}stopped+ {cleartomark /NXCalibratedRGB[/CIEBasedABC 2 dict dup begin + /MatrixLMN[.4124 .2126 .0193 .3576 .7152 .1192 .1805 .0722 .9505]def+ /WhitePoint[.9505 1 1.089] def end] /ColorSpace defineresource}if def}ifelse+ /nxsetrgbcolor{NXCalibratedRGBColorSpace setcolorspace setcolor}__NXbdef+ /nxsetgray{dup dup nxsetrgbcolor}__NXbdef+ /_NXCalibratedImage{exch{array astore dup length true}{false}ifelse+ 8 -1 roll{NXCalibratedRGBColorSpace setcolorspace}if+ 8 dict dup 9 1 roll begin /ImageType 1 def /MultipleDataSources exch def+ currentcolorspace 0 get /Indexed eq{pop /Decode[0 2 6 index exp 1 sub]def}+ {2 mul dup array /Decode exch def 1 sub 0 1 3 -1 roll{Decode exch dup 2 mod put}for}ifelse+ /DataSource exch def /ImageMatrix exch def + /BitsPerComponent exch def /Height exch def /Width exch def end image}__NXbdef+} {+ /setcmykcolor{+ 1.0 exch sub dup dup 6 -1 roll sub dup 0 lt{pop 0}if 5 1 roll+ 4 -1 roll sub dup 0 lt{pop 0}if 3 1 roll exch sub dup 0 lt{pop 0}if setrgbcolor}__NXbdef+ /currentcmykcolor{currentrgbcolor 3{1.0 exch sub 3 1 roll}repeat 0}__NXbdef+ /colorimage{2 copy 3 ne or{_NXDoImageOp}{4 index dup 8 ne exch 4 ne and{_NXDoImageOp}{+ pop pop save 6 1 roll 12 dict begin/Proc exch def/Res 0 string def+ /Alloc{2 index length mul 2 add dup 2 index load length gt{1.2 mul round cvi string def}{pop pop}ifelse}def+ 1 index 8 eq{/Unpack{.34 Alloc}def}{+ /Wid 4 index 3 mul def exch pop 8 exch/Str1 0 string def/Lim Wid def+ /Unpack{.67 Alloc/Str1 2 Alloc 0 exch Lim exch+ {dup -4 bitshift 17 mul Str1 exch 4 index exch put 15 and 17 mul Str1 exch 3 index 1 add exch put+ 2 sub dup 0 le{0 lt Wid exch{exch 1 sub exch}if}if exch 2 add exch+ }forall/Lim exch def Str1 exch 0 exch getinterval+ }def+ }ifelse+ /Ops[{.3 mul add 1}{.59 mul add 2}{.11 mul add round cvi Res exch 2 index exch put 1 add 0.0 0}]def/Val 0.0 def/Phase 0 def+ {0 Val Phase Proc/Res Unpack{exch Ops exch get exec}forall/Phase exch def/Val exch def Res exch 0 exch getinterval}+ image end restore}ifelse}ifelse+ }__NXbdef+ /nxsetrgbcolor{setrgbcolor}__NXbdef /nxsetgray{setgray}__NXbdef+ /setpattern{pop .5 setgray}__NXbdef+ /_NXCalibratedImage{dup 1 eq {pop pop image}{colorimage}ifelse pop}__NXbdef+} ifelse+/_NXSetCMYKOrRGB where{pop}{+ mark{systemdict /currentwindow get exec}stopped+ {{pop pop pop setcmykcolor}}{{nxsetrgbcolor pop pop pop pop}}ifelse /_NXSetCMYKOrRGB exch def cleartomark+}ifelse+%%EndProcSet++gsave+ /__NXbasematrix matrix currentmatrix def+grestore+%%EndProlog+%%BeginSetup+%%EndSetup+gsave+0 0 236 51 rectclip+[1 0 0 -1 -156.280014 67] concat+156.280014 16 235 51 rectclip+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+330.280029 28 352.280029 28 setbbox+330.280029 28 moveto+352.280029 28 lineto+end+stroke+grestore+0 setlinejoin+gsave+/Helvetica findfont 24 scalefont [1 0 0 -1 0 0] makefont+120+exch+defineuserobject+120 execuserobject setfont+0 nxsetgray+gsave+324 17 35 49 rectclip+/Sonata findfont 24 scalefont [1 0 0 -1 0 0] makefont+156+exch+defineuserobject+156 execuserobject setfont+0 nxsetgray+324 51 moveto (q q q) show+grestore+grestore+gsave+156 execuserobject setfont+0 nxsetgray+gsave+367 17 9 41 rectclip+156 execuserobject setfont+0 nxsetgray+367 51 moveto (q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+323.279999 20 383.890015 20 setbbox+323.279999 20 moveto+383.890015 20 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+345 12 16 15 rectfill+gsave+156 execuserobject setfont+0 nxsetgray+gsave+347 16 12 11 rectclip+/Helvetica findfont 12 scalefont [1 0 0 -1 0 0] makefont+10+exch+defineuserobject+10 execuserobject setfont+0 nxsetgray+349 24 moveto (3) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+383.890015 20 383.890015 28.029984 setbbox+383.890015 20 moveto+383.890015 28.029984 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+323.279999 20 323.279999 28.029984 setbbox+323.279999 20 moveto+323.279999 28.029984 lineto+end+stroke+grestore+0 setlinejoin+gsave+10 execuserobject setfont+0 nxsetgray+/Helvetica-Bold findfont 12 scalefont [1 0 0 -1 0 0] makefont+157+exch+defineuserobject+157 execuserobject setfont+0 nxsetgray+379 51 moveto (.) show+grestore+gsave+157 execuserobject setfont+0 nxsetgray+gsave+207 17 9 41 rectclip+156 execuserobject setfont+0 nxsetgray+207 51 moveto (q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+158.279999 20 193.890015 20 setbbox+158.279999 20 moveto+193.890015 20 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+168 12 16 15 rectfill+gsave+156 execuserobject setfont+0 nxsetgray+gsave+170 16 12 11 rectclip+10 execuserobject setfont+0 nxsetgray+172 24 moveto (3) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+193.890015 20 193.890015 28.029984 setbbox+193.890015 20 moveto+193.890015 28.029984 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+158.279999 20 158.279999 28.029984 setbbox+158.279999 20 moveto+158.279999 28.029984 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+165.280014 28 187.280014 28 setbbox+165.280014 28 moveto+187.280014 28 lineto+end+stroke+grestore+0 setlinejoin+gsave+10 execuserobject setfont+0 nxsetgray+gsave+159 17 35 49 rectclip+156 execuserobject setfont+0 nxsetgray+159 51 moveto (q q q) show+grestore+grestore+gsave+156 execuserobject setfont+0 nxsetgray+120 execuserobject setfont+0 nxsetgray+260 47 moveto (=) show+grestore+grestore+%%Trailer+%%DocumentFonts: Sonata+%%+ Helvetica-Bold+%%+ Helvetica
+ src/Doc/Pics/haskore.tex view
@@ -0,0 +1,133 @@+\begin{tikzpicture}[+ solid/.style={rectangle,+ draw,+ thick,+ minimum height=1cm,+ text width=3cm,+ text badly centered},+ clear/.style={rectangle,+ minimum height=0.5cm,+ text width=3cm,+ text badly centered},+ broken/.style={rectangle,+ draw,+ dashed,+ minimum height=1cm,+ text width=3cm,+ text badly centered},+ dashy/.style={ellipse,+ draw,+ dashed,+ minimum height=1.8cm,+ text width=3cm,+ text badly centered}+ ]++ %% Haskore, on top++ \draw (5.25,0)+ node[solid] + (haskore)+ { \textbf{Haskore} };+ \draw (5.25,0)+ node[dashy]+ { };++ %% Second row, translators+ \draw (0,-2)+ node[solid]+ (hsk2mid)+ { \small Haskore~$\rightarrow$~MIDI \\ Translator };+ \draw (3.5,-2)+ node[solid]+ (hsk2csn)+ { \small Haskore~$\rightarrow$~CSound \\ Translator};+ \draw (7.0,-2)+ node[solid]+ (hsk2mkt)+ { \small Haskore~$\rightarrow$~MusicKit Translator};+ \draw (10.5,-2)+ node[solid]+ (hsk2cmn)+ { \small Haskore~$\rightarrow$~Notation Translator }; ++ \draw (0,-3.25)+ node[clear]+ (midifile)+ { \small Standard MIDI~File };+ \draw (3.5,-3.25)+ node[clear]+ (scorefile)+ { \small CSound Score File };+ \draw (7.0,-3.25)+ node[clear]+ (mkitfile)+ { \small MusicKit ScoreFile };+ \draw (10.5,-3.25)+ node[clear]+ (cmncode)+ { \small CMN Code };++ %% Third row, helpers+ \draw (0,-4.5)+ node[solid]+ (midiplay)+ { \small MIDI File Player };+ \draw (3.5,-4.5)+ node[solid]+ (csound)+ { \small CSound };+ \draw (7.0,-4.5)+ node[solid]+ (musickit)+ { \small MusicKit };+ \draw (10.5,-4.5)+ node[solid]+ (cmn)+ { \small CMN }; ++ \draw (0,-5.75)+ node[clear]+ (midi)+ { \small MIDI };+ \draw (3.5,-5.75)+ node[clear]+ (sndfile)+ { \small \texttt{.snd} File };+ \draw (10.5,-5.75)+ node[clear]+ (notated)+ { \small Notated score };++ %% Last row, results+ \draw (0,-7)+ node[broken]+ (instruments)+ { \small MIDI Instruments };+ \draw (3.5,-7)+ node[solid]+ (snd)+ { \small Sound File Player };++ \draw [very thick,->] (haskore) to (hsk2mid.north);+ \draw [very thick,->] (haskore) to (hsk2csn.north);+ \draw [very thick,->] (haskore) to (hsk2mkt.north);+ \draw [very thick,->] (haskore) to (hsk2cmn.north);++ \draw [very thick,-] (hsk2mid.south) to (midifile.north);+ \draw [very thick,-] (hsk2csn.south) to (scorefile.north);+ \draw [very thick,-] (hsk2mkt.south) to (mkitfile.north);+ \draw [very thick,-] (hsk2cmn.south) to (cmncode.north);++ \draw [very thick,->] (midifile.south) to (midiplay.north);+ \draw [very thick,->] (scorefile.south) to (csound.north);+ \draw [very thick,->] (mkitfile.south) to (musickit.north);+ \draw [very thick,->] (cmncode.south) to (cmn.north);++ \draw [very thick,-] (midiplay.south) to (midi.north);+ \draw [very thick,-] (csound.south) to (sndfile.north);+ \draw [very thick,->] (cmn.south) to (notated.north);++ \draw [very thick,->] (midi.south) to (instruments.north);+ \draw [very thick,->] (sndfile.south) to (snd.north);+\end{tikzpicture}
+ src/Doc/Pics/midi.tex view
@@ -0,0 +1,48 @@+\begin{tikzpicture}[+ solid/.style={rectangle,+ draw,+ thick,+ minimum height=1cm,+ text width=2cm,+ text badly centered},+ clear/.style={rectangle,+ minimum height=0.5cm,+ text width=2.5cm,+ text badly centered}+ ]++ \draw (0,0)+ node[solid]+ (midifile)+ { \small MIDI File };+ \draw (3.0,0)+ node[clear]+ (stream)+ { \small \texttt{Stream} };+ \draw (6.0,0)+ node[solid]+ (datatype)+ { \small \texttt{MidiFile} data~type};+ \draw (8.8,0)+ node[clear]+ (performance)+ { \small \texttt{Performance} };+ \draw (12.0,0)+ node[solid]+ (musictype)+ { \small \texttt{Music} data~type};++ \draw [thick,->] (midifile.15) to + node[above] { \small \texttt{Load.fromFile} }+ (datatype.165);+ \draw [thick,<-] (midifile.-15) to+ node[below] { \small \texttt{Save.toFile} }+ (datatype.-165);+ \draw [thick,->] (datatype.15) to+ node[above] { \small \texttt{Read.toMusic} }+ (musictype.165);+ \draw [thick,<-] (datatype.-15) to+ node[below] { \small \texttt{Write.fromMusic} }+ (musictype.-165);++\end{tikzpicture}
+ src/Doc/Pics/poly.eps view
@@ -0,0 +1,1068 @@+%!PS-Adobe-2.0 EPSF-2.0+%%Title: +%%Creator: Diagram+%%CreationDate: Mon Sep 5 13:19:42 1994+%%For: hudak+%%DocumentFonts: (atend)+%%Pages: 0 0+%%BoundingBox: 0 0 296 202+%%NXNextStepVersion: 3.0+%%EndComments++%%BeginProcSet: /usr/lib/NextStep/printPackage.ps 3.0+%!+% NeXT Printing Package+% Version: 3.1+% Copyright: 1988, NeXT, Inc.++/__NXdef{1 index where{pop pop pop}{def}ifelse}bind def+/__NXbdef{1 index where{pop pop pop}{bind def}ifelse}bind def+/UserObjects 10 array __NXdef+/defineuserobject{+ exch dup 1 add dup UserObjects length gt{+ array dup 0 UserObjects putinterval+ /UserObjects exch def+ }{pop}ifelse UserObjects exch 3 -1 roll put+}__NXbdef+/undefineuserobject{UserObjects exch null put}__NXbdef+/execuserobject{UserObjects exch get exec}__NXbdef+/__NXRectPath{4 2 roll moveto 1 index 0 rlineto+0 exch rlineto neg 0 rlineto closepath}__NXbdef+/__NXProcessRectArgs{+ 1 index type /arraytype eq{+ exch 0 4 2 index length 1 sub{+ dup 3 add 1 exch{1 index exch get exch}for+ 5 1 roll 5 index exec+ }for pop pop+ }{exec}ifelse+}__NXbdef+/rectfill{gsave newpath {__NXRectPath fill} __NXProcessRectArgs grestore}__NXbdef+/rectclip{newpath {__NXRectPath} __NXProcessRectArgs clip newpath}__NXbdef+/rectstroke{+ gsave newpath dup type /arraytype eq{dup length 6 eq}{false}ifelse{+ {gsave __NXRectPath null concat stroke grestore}+ dup length array cvx copy dup 2 4 -1 roll put __NXProcessRectArgs+ }{{__NXRectPath stroke} __NXProcessRectArgs}ifelse grestore+}__NXbdef+/_NXLevel2 systemdict /languagelevel known {languagelevel 2 ge}{false}ifelse __NXdef+/xyshow{+ 0 1 3 index length 1 sub{+ currentpoint 4 index 3 index 1 getinterval show+ 3 index 3 index 2 mul 1 add get add exch+ 3 index 3 index 2 mul get add exch moveto pop+ }for pop pop+}__NXbdef+/xshow{+ 0 1 3 index length 1 sub{+ currentpoint 4 index 3 index 1 getinterval show+ exch 3 index 3 index get add exch moveto pop+ }for pop pop+}__NXbdef+/yshow{+ 0 1 3 index length 1 sub{+ currentpoint 4 index 3 index 1 getinterval show+ 3 index 3 index get add moveto pop+ }for pop pop+}__NXbdef+/arct{arcto pop pop pop pop}__NXbdef+/setbbox{pop pop pop pop}__NXbdef+/ucache{}__NXbdef+/ucachestatus{mark 0 0 0 0 0}__NXbdef+/setucacheparams{cleartomark}__NXbdef+/uappend{systemdict begin cvx exec end}__NXbdef+/ueofill{gsave newpath uappend eofill grestore}__NXbdef+/ufill{gsave newpath uappend fill grestore}__NXbdef+/ustroke{+ gsave newpath dup length 6 eq+ {exch uappend concat}{uappend}ifelse+ stroke grestore+}__NXbdef+/__NXustrokepathMatrix dup where {pop pop}{matrix def}ifelse+/ustrokepath{+ newpath dup length 6 eq{+ exch uappend __NXustrokepathMatrix currentmatrix exch concat+ strokepath setmatrix+ }{uappend strokepath}ifelse+} __NXbdef+/upath{+ [exch {/ucache cvx}if pathbbox /setbbox cvx+ {/moveto cvx}{/lineto cvx}{/curveto cvx}{/closepath cvx}pathforall]cvx+} __NXbdef+/setstrokeadjust{pop}__NXbdef+/currentstrokeadjust{false}__NXbdef+/selectfont{exch findfont exch+dup type /arraytype eq {makefont}{scalefont}ifelse setfont}__NXbdef+/_NXCombineArrays{+ counttomark dup 2 add index dup length 3 -1 roll {+ 2 index length sub dup 4 1 roll 1 index exch 4 -1 roll putinterval exch+ }repeat pop pop pop+}__NXbdef+/flushgraphics{}def+/setwindowtype{pop pop}def+/currentwindowtype{pop 0}def+/setalpha{pop}def+/currentalpha{1.0}def+/hidecursor{}def+/obscurecursor{}def+/revealcursor{}def+/setcursor{4 {pop}repeat}bind def+/showcursor{}def+/NextStepEncoding where not{+/NextStepEncoding StandardEncoding 256 array copy def+0 [129/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/Ccedilla/Egrave+/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis+/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/Ugrave/Uacute+/Ucircumflex/Udieresis/Yacute/Thorn/mu/multiply/divide/copyright+176/registered 181/brokenbar 190/logicalnot 192/onesuperior 201/twosuperior+204/threesuperior 209/plusminus/onequarter/onehalf/threequarters/agrave+/aacute/acircumflex/atilde/adieresis/aring/ccedilla/egrave/eacute+/ecircumflex/edieresis/igrave 226/iacute 228/icircumflex/idieresis/eth+/ntilde 236/ograve/oacute/ocircumflex/otilde/odieresis 242/ugrave/uacute+/ucircumflex 246/udieresis/yacute 252/thorn/ydieresis]+{dup type /nametype eq+ {NextStepEncoding 2 index 2 index put pop 1 add}{exch pop}ifelse+}forall pop+/NextStepEncoding NextStepEncoding readonly def+/_NXfstr 128 string dup 0 (_NX) putinterval def+/_NXfindfont /findfont load def+/findfont{+ % Because we can never let NextStepEncoding get into+ % SharedFontDirectory, we cannot reencode a font to NextStepEncoding+ % if we are in shared mode. So if currentshared is true,+ % we call the normal findfont and return that+ /currentshared where {pop currentshared} {false} ifelse+ {_NXfindfont}+ {dup _NXfstr 3 125 getinterval cvs length 3 add _NXfstr 0 3 -1 roll+ getinterval cvn exch FontDirectory 2 index known + {pop FontDirectory exch get}+ {_NXfindfont dup /Encoding get StandardEncoding eq+ { dup length dict exch+ {1 index /FID ne {2 index 3 1 roll put}{pop pop}ifelse}forall+ dup /Encoding NextStepEncoding put definefont+ }{exch pop} ifelse+ }ifelse+ }ifelse+}bind def+}{pop}ifelse+/_NXImageString {/__NXImageString where{pop}{/__NXImageString 4000 string __NXdef}ifelse __NXImageString}__NXbdef+/_NXDoImageOp{+ 3 dict begin /parr 5 array def 1 index{dup}{1}ifelse /chans exch def+ chans 2 add 2 roll parr 0 chans getinterval astore pop+ 5 index 4 index mul 2 index{1 sub 8 idiv 1 add mul}{mul 1 sub 8 idiv 1 add}ifelse+ 4 index mul /totbytes exch def pop exch pop+ gsave matrix invertmatrix concat 0.5 setgray 0 0 4 2 roll rectfill grestore+ {0 1 chans 1 sub{parr exch get exec length totbytes exch sub /totbytes exch def}for totbytes 0 le{exit}if}loop end+}__NXbdef+/alphaimage{1 add _NXDoImageOp}def+_NXLevel2{ + /NXCalibratedRGBColorSpace where{pop}{+ /NXCalibratedRGBColorSpace+ {mark /NXCalibratedRGB /ColorSpace findresource exch pop}stopped+ {cleartomark /NXCalibratedRGB[/CIEBasedABC 2 dict dup begin + /MatrixLMN[.4124 .2126 .0193 .3576 .7152 .1192 .1805 .0722 .9505]def+ /WhitePoint[.9505 1 1.089] def end] /ColorSpace defineresource}if def}ifelse+ /nxsetrgbcolor{NXCalibratedRGBColorSpace setcolorspace setcolor}__NXbdef+ /nxsetgray{dup dup nxsetrgbcolor}__NXbdef+ /_NXCalibratedImage{exch{array astore dup length true}{false}ifelse+ 8 -1 roll{NXCalibratedRGBColorSpace setcolorspace}if+ 8 dict dup 9 1 roll begin /ImageType 1 def /MultipleDataSources exch def+ currentcolorspace 0 get /Indexed eq{pop /Decode[0 2 6 index exp 1 sub]def}+ {2 mul dup array /Decode exch def 1 sub 0 1 3 -1 roll{Decode exch dup 2 mod put}for}ifelse+ /DataSource exch def /ImageMatrix exch def + /BitsPerComponent exch def /Height exch def /Width exch def end image}__NXbdef+} {+ /setcmykcolor{+ 1.0 exch sub dup dup 6 -1 roll sub dup 0 lt{pop 0}if 5 1 roll+ 4 -1 roll sub dup 0 lt{pop 0}if 3 1 roll exch sub dup 0 lt{pop 0}if setrgbcolor}__NXbdef+ /currentcmykcolor{currentrgbcolor 3{1.0 exch sub 3 1 roll}repeat 0}__NXbdef+ /colorimage{2 copy 3 ne or{_NXDoImageOp}{4 index dup 8 ne exch 4 ne and{_NXDoImageOp}{+ pop pop save 6 1 roll 12 dict begin/Proc exch def/Res 0 string def+ /Alloc{2 index length mul 2 add dup 2 index load length gt{1.2 mul round cvi string def}{pop pop}ifelse}def+ 1 index 8 eq{/Unpack{.34 Alloc}def}{+ /Wid 4 index 3 mul def exch pop 8 exch/Str1 0 string def/Lim Wid def+ /Unpack{.67 Alloc/Str1 2 Alloc 0 exch Lim exch+ {dup -4 bitshift 17 mul Str1 exch 4 index exch put 15 and 17 mul Str1 exch 3 index 1 add exch put+ 2 sub dup 0 le{0 lt Wid exch{exch 1 sub exch}if}if exch 2 add exch+ }forall/Lim exch def Str1 exch 0 exch getinterval+ }def+ }ifelse+ /Ops[{.3 mul add 1}{.59 mul add 2}{.11 mul add round cvi Res exch 2 index exch put 1 add 0.0 0}]def/Val 0.0 def/Phase 0 def+ {0 Val Phase Proc/Res Unpack{exch Ops exch get exec}forall/Phase exch def/Val exch def Res exch 0 exch getinterval}+ image end restore}ifelse}ifelse+ }__NXbdef+ /nxsetrgbcolor{setrgbcolor}__NXbdef /nxsetgray{setgray}__NXbdef+ /setpattern{pop .5 setgray}__NXbdef+ /_NXCalibratedImage{dup 1 eq {pop pop image}{colorimage}ifelse pop}__NXbdef+} ifelse+/_NXSetCMYKOrRGB where{pop}{+ mark{systemdict /currentwindow get exec}stopped+ {{pop pop pop setcmykcolor}}{{nxsetrgbcolor pop pop pop pop}}ifelse /_NXSetCMYKOrRGB exch def cleartomark+}ifelse+%%EndProcSet++gsave+ /__NXbasematrix matrix currentmatrix def+grestore+%%EndProlog+%%BeginSetup+%%EndSetup+gsave+0 0 296 202 rectclip+[1 0 0 -1 -119 208] concat+119 6 296 202 rectclip+gsave+/Helvetica findfont 12 scalefont [1 0 0 -1 0 0] makefont+10+exch+defineuserobject+10 execuserobject setfont+0 nxsetgray+gsave+191 43 9 41 rectclip+/Sonata findfont 24 scalefont [1 0 0 -1 0 0] makefont+80+exch+defineuserobject+80 execuserobject setfont+0 nxsetgray+191 77 moveto (q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+215 54 227 54 setbbox+215 54 moveto+227 54 lineto+end+stroke+grestore+0 setlinejoin+gsave+80 execuserobject setfont+0 nxsetgray+gsave+209 43 26 49 rectclip+80 execuserobject setfont+0 nxsetgray+209 77 moveto (q q) show+grestore+grestore+gsave+80 execuserobject setfont+0 nxsetgray+gsave+236 43 33 43 rectclip+80 execuserobject setfont+0 nxsetgray+236 77 moveto (q q q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+242 54 264 54 setbbox+242 54 moveto+264 54 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+254 59 264 59 setbbox+254 59 moveto+264 59 lineto+end+stroke+grestore+0 setlinejoin+gsave+80 execuserobject setfont+0 nxsetgray+gsave+272 43 9 41 rectclip+80 execuserobject setfont+0 nxsetgray+272 77 moveto (q) show+grestore+grestore+gsave+80 execuserobject setfont+0 nxsetgray+gsave+290 43 9 41 rectclip+80 execuserobject setfont+0 nxsetgray+290 77 moveto (q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+323 54 335 54 setbbox+323 54 moveto+335 54 lineto+end+stroke+grestore+0 setlinejoin+gsave+80 execuserobject setfont+0 nxsetgray+gsave+317 43 26 49 rectclip+80 execuserobject setfont+0 nxsetgray+317 77 moveto (q q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+350 54 362 54 setbbox+350 54 moveto+362 54 lineto+end+stroke+grestore+0 setlinejoin+gsave+80 execuserobject setfont+0 nxsetgray+gsave+344 43 26 49 rectclip+80 execuserobject setfont+0 nxsetgray+344 77 moveto (q q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+377 54 389 54 setbbox+377 54 moveto+389 54 lineto+end+stroke+grestore+0 setlinejoin+gsave+80 execuserobject setfont+0 nxsetgray+gsave+371 43 26 49 rectclip+80 execuserobject setfont+0 nxsetgray+371 77 moveto (q q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+208 45 284.279999 46 setbbox+208 46 moveto+284.279999 45 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+232 38 28 15 rectfill+gsave+80 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+237 50 moveto (3:2) show+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+284.279999 45 284.279999 55.029999 setbbox+284.279999 45 moveto+284.279999 55.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+208 46 208 54.029999 setbbox+208 46 moveto+208 54.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+188 35 302.779999 35 setbbox+188 35 moveto+302.779999 35 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+232 27 26 15 rectfill+gsave+10 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+236 39 moveto (4:3) show+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+302.779999 35 302.779999 43.029999 setbbox+302.779999 35 moveto+302.779999 43.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+188 35 188 43.029999 setbbox+188 35 moveto+188 43.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+316 35 394.790009 35 setbbox+316 35 moveto+394.790009 35 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+342 27 26 15 rectfill+gsave+10 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+346 39 moveto (3:2) show+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+394.790009 35 394.790009 43.029999 setbbox+394.790009 35 moveto+394.790009 43.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+316 35 316 43.029999 setbbox+316 35 moveto+316 43.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+177 22 406.549988 22 setbbox+177 22 moveto+406.549988 22 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+278 14 26 15 rectfill+gsave+10 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+282 26 moveto (5:6) show+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+406.549988 22 406.549988 30.030001 setbbox+406.549988 22 moveto+406.549988 30.030001 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+177 22 177 30.030001 setbbox+177 22 moveto+177 30.030001 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+173.279999 149 246.229996 149 setbbox+173.279999 149 moveto+246.229996 149 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+196 141 26 15 rectfill+gsave+10 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+200 153 moveto (5:4) show+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+246.229996 149 246.229996 157.029999 setbbox+246.229996 149 moveto+246.229996 157.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+173.279999 149 173.279999 157.029999 setbbox+173.279999 149 moveto+173.279999 157.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+177.279999 161 212.889999 161 setbbox+177.279999 161 moveto+212.889999 161 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+187 153 16 15 rectfill+gsave+10 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+191 165 moveto (3) show+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+212.889999 161 212.889999 169.029999 setbbox+212.889999 161 moveto+212.889999 169.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+177.279999 161 177.279999 169.029999 setbbox+177.279999 161 moveto+177.279999 169.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+313.279999 161 348.890015 161 setbbox+313.279999 161 moveto+348.890015 161 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+323 153 16 15 rectfill+gsave+10 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+327 165 moveto (3) show+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+348.890015 161 348.890015 169.029999 setbbox+348.890015 161 moveto+348.890015 169.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+313.279999 161 313.279999 169.029999 setbbox+313.279999 161 moveto+313.279999 169.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+319.279999 169 341.279999 169 setbbox+319.279999 169 moveto+341.279999 169 lineto+end+stroke+grestore+0 setlinejoin+gsave+10 execuserobject setfont+0 nxsetgray+gsave+313 158 35 49 rectclip+80 execuserobject setfont+0 nxsetgray+313 192 moveto (q q q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+220.279999 169 242.279999 169 setbbox+220.279999 169 moveto+242.279999 169 lineto+end+stroke+grestore+0 setlinejoin+gsave+80 execuserobject setfont+0 nxsetgray+gsave+214 158 35 49 rectclip+80 execuserobject setfont+0 nxsetgray+214 192 moveto (q q q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+184.279999 169 206.279999 169 setbbox+184.279999 169 moveto+206.279999 169 lineto+end+stroke+grestore+0 setlinejoin+gsave+80 execuserobject setfont+0 nxsetgray+gsave+178 158 35 49 rectclip+80 execuserobject setfont+0 nxsetgray+178 192 moveto (q q q) show+grestore+grestore+gsave+80 execuserobject setfont+0 nxsetgray+gsave+250 158 59 43 rectclip+80 execuserobject setfont+0 nxsetgray+250 192 moveto (q q q q q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+257.279999 169 301.279999 169 setbbox+257.279999 169 moveto+301.279999 169 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+355.279999 169 377.279999 169 setbbox+355.279999 169 moveto+377.279999 169 lineto+end+stroke+grestore+0 setlinejoin+gsave+80 execuserobject setfont+0 nxsetgray+gsave+349 158 35 49 rectclip+80 execuserobject setfont+0 nxsetgray+349 192 moveto (q q q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+391.279999 169 403.279999 169 setbbox+391.279999 169 moveto+403.279999 169 lineto+end+stroke+grestore+0 setlinejoin+gsave+80 execuserobject setfont+0 nxsetgray+gsave+385 158 26 49 rectclip+80 execuserobject setfont+0 nxsetgray+385 192 moveto (q q) show+grestore+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+252.279999 149 305.769989 149 setbbox+252.279999 149 moveto+305.769989 149 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+266 141 26 15 rectfill+gsave+80 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+270 153 moveto (5:4) show+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+305.769989 149 305.769989 157.029999 setbbox+305.769989 149 moveto+305.769989 157.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+252.279999 149 252.279999 157.029999 setbbox+252.279999 149 moveto+252.279999 157.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+311.279999 149 382.279999 149 setbbox+311.279999 149 moveto+382.279999 149 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+333 141 26 15 rectfill+gsave+10 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+337 153 moveto (5:4) show+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+382.279999 149 382.279999 157.029999 setbbox+382.279999 149 moveto+382.279999 157.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+311.279999 149 311.279999 157.029999 setbbox+311.279999 149 moveto+311.279999 157.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+169.279999 135 408.559998 135 setbbox+169.279999 135 moveto+408.559998 135 lineto+end+stroke+grestore+0 setlinejoin+1 nxsetgray+275 127 26 15 rectfill+gsave+10 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+279 139 moveto (7:6) show+grestore+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+408.559998 135 408.559998 143.029999 setbbox+408.559998 135 moveto+408.559998 143.029999 lineto+end+stroke+grestore+0 setlinejoin+0 nxsetgray+1 setlinewidth+2 setlinejoin+gsave+newpath+systemdict+begin+169.279999 135 169.279999 143.029999 setbbox+169.279999 135 moveto+169.279999 143.029999 lineto+end+stroke+grestore+0 setlinejoin+gsave+10 execuserobject setfont+0 nxsetgray+/Helvetica-Bold findfont 12 scalefont [1 0 0 -1 0 0] makefont+81+exch+defineuserobject+81 execuserobject setfont+0 nxsetgray+122 56 moveto (pr1) show+grestore+gsave+81 execuserobject setfont+0 nxsetgray+81 execuserobject setfont+0 nxsetgray+122 169 moveto (pr2) show+grestore+gsave+81 execuserobject setfont+0 nxsetgray+10 execuserobject setfont+0 nxsetgray+279 19 moveto ( .) show+grestore+grestore+%%Trailer+%%DocumentFonts: Sonata+%%+ Helvetica-Bold+%%+ Helvetica
+ src/Doc/Tutorial.bbl view
@@ -0,0 +1,113 @@+\begin{thebibliography}{HMGW96}++\bibitem[AK92]{formula}+D.P. Anderson and R.~Kuivila.+\newblock Formula: A programming language for expressive computer music.+\newblock In Denis Baggi, editor, {\em Computer Generated Music}. IEEE Computer+ Society Press, 1992.++\bibitem[Ary94]{arya94}+K.~Arya.+\newblock A functional animation starter-kit.+\newblock {\em Journal of Functional Programming}, 4(1):1--18, 1994.++\bibitem[Bal92]{balaban92}+M.~Balaban.+\newblock Music structures: Interleaving the temporal and hierarchical aspects+ of music.+\newblock In M.~Balaban, K.~Ebcioglu, and O.~Laske, editors, {\em Understanding+ Music With AI}, pages 110--139. AAAI Press, 1992.++\bibitem[BW88]{birdwadler88}+R.~Bird and P.~Wadler.+\newblock {\em Introduction to Functional Programming}.+\newblock Prentice Hall, New York, 1988.++\bibitem[Col84]{moxie}+D.~Collinge.+\newblock Moxie: A languge for computer music performance.+\newblock In {\em Proc. Int'l Computer Music Conference}, pages 217--220.+ Computer Music Association, 1984.++\bibitem[CR84]{formes}+P.~Cointe and X.~Rodet.+\newblock Formes: an object and time oriented system for music composition and+ synthesis.+\newblock In {\em Proceedings of the 1984 ACM Symposium on Lisp and Functional+ Programmming}, pages 85--95. ACM, 1984.++\bibitem[Dan89]{canon}+R.B. Dannenberg.+\newblock The {C}anon score language.+\newblock {\em Computer Music Journal}, 13(1):47--56, 1989.++\bibitem[DFV92]{fugue}+R.B. Dannenberg, C.L. Fraley, and P.~Velikonja.+\newblock A functional language for sound synthesis with behavioral abstraction+ and lazy evaluation.+\newblock In Denis Baggi, editor, {\em Computer Generated Music}. IEEE Computer+ Society Press, 1992.++\bibitem[For73]{forte}+A.~Forte.+\newblock {\em The Structure of Atonal Music}.+\newblock Yale University Press, New Haven, CT, 1973.++\bibitem[HB95]{hudakberger95}+P.~Hudak and J.~Berger.+\newblock A model of performance, interaction, and improvisation.+\newblock In {\em Proceedings of International Computer Music Conference}.+ Int'l Computer Music Association, 1995.++\bibitem[Hen82]{henderson82}+P.~Henderson.+\newblock Functional geometry.+\newblock In {\em Proceedings of the 1982 ACM Symposium on Lisp and Functional+ Programmming}. ACM, 1982.++\bibitem[HF92]{haskell-tutorial}+P.~Hudak and J.~Fasel.+\newblock A gentle introduction to {H}askell.+\newblock {\em ACM SIGPLAN Notices}, 27(5), May 1992.++\bibitem[HMGW96]{haskore}+P.~Hudak, T.~Makucevich, S.~Gadde, and B.~Whong.+\newblock Haskore music notation -- an algebra of music.+\newblock {\em Journal of Functional Programming}, 6(3), June 1996.+\newblock available via\\+\url{ftp://nebula.systemsz.cs.yale.edu/pub/yale-fp/papers/haskore/hmn-lhs.ps}.++\bibitem[HS92]{scoresynth}+G.~Haus and A.~Sametti.+\newblock Scoresynth: A system for the synthesis of music scores based on petri+ nets and a music algebra.+\newblock In Denis Baggi, editor, {\em Computer Generated Music}. IEEE Computer+ Society Press, 1992.++\bibitem[IMA90]{midi}+Midi 1.0 detailed specification: Document version 4.1.1, February 1990.++\bibitem[JB91]{musickit}+D.~Jaffe and L.~Boynton.+\newblock An overview of the sound and music kits for the {NeXT} computer.+\newblock In S.T. Pope, editor, {\em The Well-Tempered Object}, pages 107--118.+ MIT Press, 1991.++\bibitem[OFLB94]{grame94}+O.~Orlarey, D.~Fober, S.~Letz, and M.~Bilton.+\newblock Lambda calculus and music calculi.+\newblock In {\em Proceedings of International Computer Music Conference}.+ Int'l Computer Music Association, 1994.++\bibitem[Sch83]{pla}+B.~Schottstaedt.+\newblock Pla: A composer's idea of a language.+\newblock {\em Computer Music Journal}, 7(1):11--20, 1983.++\bibitem[Ver86]{csound}+B.~Vercoe.+\newblock Csound: A manual for the audio processing system and supporting+ programs.+\newblock Technical report, MIT Media Lab, 1986.++\end{thebibliography}
src/Doc/Tutorial.tex view
@@ -7,10 +7,13 @@ \makeindex \usepackage{color}+\usepackage{tikz}+\usetikzlibrary{positioning,shapes}+ \usepackage{graphicx} \graphicspath{{.}{Pics/}} -\newif\ifpdf+\usepackage{ifpdf} \ifx\pdfoutput\undefined \pdffalse \else@@ -25,6 +28,7 @@ \usepackage{times}+\usepackage[T1]{fontenc} \usepackage{listings} \usepackage{amsbsy} % \poor man's bold \pmb @@ -33,12 +37,17 @@ \lstset{% language=Haskell,+ frame=single,+ framerule=1pt, showstringspaces=false,- basicstyle=\ttfamily,+ basicstyle=\footnotesize\ttfamily, keywordstyle=\textbf, commentstyle=\highlightcomment,- backgroundcolor=\color{lightgrey}}+ backgroundcolor=\color{lightgrey}+} ++ \newcommand\highlightcomment[1]{\textsl{\color{darkgrey}#1}} \lstnewenvironment{haskelllisting} {\lstset{language=Haskell,gobble=2,firstline=2}}{}@@ -55,9 +64,9 @@ citecolor=darkgreen, pdfstartview=FitH, bookmarks,- pdftitle={Haskore tutorial},- pdfsubject={},- pdfkeywords={},+ pdftitle={Haskore Music Tutorial},+ pdfsubject={Haskore -- Music composition DSL for Haskell},+ pdfkeywords={Haskell, DSL, Functional Programming}, pdfauthor={Paul Hudak} ]{hyperref} \pdfimageresolution=288@@ -117,8 +126,12 @@ \maketitle +\pagebreak+ \tableofcontents +\pagebreak+ % the introduction \input{Doc/Introduction.tex} @@ -204,6 +217,8 @@ % related work \input{Doc/Related.tex} +\pagebreak+ \appendix \section{Helper modules}@@ -230,8 +245,12 @@ % discussion about design decisions \input{Doc/Discussion} +\pagebreak+ \bibliographystyle{alpha}-\bibliography{/homes/systems/hudak/Bib/old}+\bibliography{src/Doc/old}++\pagebreak \printindex
src/Haskore.lhs view
@@ -20,7 +20,7 @@ \begin{figure*} \centerline{-\includegraphics[height=4.0in]{Doc/Pics/haskore}+\input{Doc/Pics/haskore.tex} } \caption{Overall System Diagram} \figlabel{haskore}
src/Haskore/Interface/MIDI/Write.lhs view
@@ -99,7 +99,7 @@ Here is the basic structure of the modules and functions: \begin{center}-\includegraphics{midi}+\input{src/Doc/Pics/midi} \end{center} Given instrument and drum maps (\secref{user-patch-map}),
+ src/Test/CSound/Makefile view
@@ -0,0 +1,2 @@+%.wav: %.orc %.sco+ csound -W -b 1024 -d -m 0 -o $@ $^
+ src/Test/MIDI/Makefile view
@@ -0,0 +1,8 @@+%.wav: %.mid+ timidity -A800 -Ow -o $@ $<++Raenzlein.wav: Raenzlein.mid+ timidity -A800 -K -12 -Ow -o $@ $<++WhiteChristmas.wav: WhiteChristmas.mid+ timidity -A800 -K -12 -Ow -o $@ $<