1 \documentclass[a4paper,
12pt
]{book
}
3 %\usepackage{latexsym, amssymb}
6 %\usepackage{longtable}
7 %\usepackage{supertabular}
12 %\usepackage[rounded]{syntax}
15 %\usepackage[usenames,dvipsnames]{color}
17 %\usepackage[cc]{titlepic}
20 %\usepackage[urw-garamond]{mathdesign}
27 \fancyhead{} % clear all header fields
28 \fancyheadoffset[LE,RO
]{\marginparsep+
\marginparwidth}
29 \fancyhead[RO,LE
]{\thepage}
30 \fancyhead[LO
]{\rightmark}
31 \fancyhead[RE
]{\leftmark}
32 \renewcommand{\headrulewidth}{0.1pt
}
38 colorlinks = true,
%true, false
44 \newcommand{\myurl}[1]{\textcolor{blue
}{\underbar{\url{#1}}}}
47 \definecolor{yoheader
}{rgb
}{0.71,
0.01,
0.0}
50 \definecolor{margincolor
}{rgb
}{0.52,
0.02,
0.02} % grey red.
51 \definecolor{yobg
}{rgb
}{0.9,
0.9,
1}
52 \definecolor{yotxt
}{rgb
}{0.01,
0.01,
0.52}
53 \definecolor{mylstcmt
}{rgb
}{0.01,
0.52,
0.01} % a dark green.
54 %\definecolor{mylstdoc}{rgb}{0.60,0.60,0.60} % a medium grey.
55 \definecolor{mylstdoc
}{rgb
}{0.80,
0.30,
0.80} % a medium pink.
56 %\definecolor{mylsteqn}{rgb}{0.80,0.80,0.30} % a medium pink.
57 \definecolor{mylstkey
}{rgb
}{0.52,
0.01,
0.01} % a dark red.
58 %%\newcommand{\farg}[1]{\textrm{\textit{#1}}}
60 \setlength{\marginparwidth}{1.2in
}
61 \let\oldmarginpar\marginpar
62 \renewcommand\marginpar[1]{\-
\oldmarginpar[\raggedleft\color{margincolor
}\footnotesize #1]%
63 {\raggedright\color{margincolor
}\footnotesize #1}}
71 % \ChNumVar{\raggedleft\fontsize{80}{82}\sffamily\bfseries\color{yoheader}}
72 \ChNumVar{\raggedleft\Huge\color{yoheader
}}
73 %\ChTitleVar{\raggedleft\fontsize{60}{62}\sffamily\it\color{yoheader}}
74 \ChTitleVar{\raggedleft\sffamily\fontsize{30}{32}\bf\color{yoheader
}}
76 %\chapterfont{\sffamily\color{yoheader}}
77 %\sectionfont{\sffamily\color{yoheader}}
78 %\subsectionfont{\sffamily\color{yoheader}}
79 %\subsubsectionfont{\sffamily\color{yoheader}}
81 \chapterfont{\color{yoheader
}}
82 \sectionfont{\color{yoheader
}}
83 \subsectionfont{\color{yoheader
}}
84 \subsubsectionfont{\color{yoheader
}}
87 % parameters for listings
91 showstringspaces=false,
93 basicstyle=
\ttfamily\color{yotxt
},
96 commentstyle=
\slshape\color{mylstcmt
},
98 emph=
{component, declare, environment, import, library, process
},
99 emph=
{[2]ffunction, fconstant, fvariable
},
100 emph=
{[3]button, checkbox, vslider, hslider, nentry, vgroup, hgroup, tgroup, vbargraph, hbargraph, attach
},
101 emphstyle=
\color{mylstkey
},
102 % morecomment=[s][\color{mylsteqn}]{<equation>}{</equation>},
103 morecomment=
[s
][\color{mylstdoc
}]{<mdoc>
}{</mdoc>
},
105 backgroundcolor=
\color{yobg
},
109 \lstloadlanguages{C++,
[LaTeX
]TeX
}
112 % \includegraphics[width=15cm]{images/bandeau-faust}
114 \title{\Huge\color{yoheader
}\faustine User Manual
%\\\Large(version 0.9.29)
116 \author{CRI --
\textsc{Mines
} ParisTech\
\Centre de Recherche en Informatique
}
117 \date{September
2013}
120 \railalias{recur
}{$
\sim$
}
121 \railalias{lbrace
}{\
{}
122 \railalias{rbrace
}{\
}}
123 \railalias{dollar
}{\$
}
125 \railalias{arobase
}{@
}
126 \railalias{ampersand
}{\&
}
127 \railalias{hat
}{$
\land$
}
129 \railalias{pipe
}{$|$
}
131 \railalias{backslash
}{\char"
5C
}
132 \railterm{recur,lbrace,rbrace,dollar,mod,kot,arobase,ampersand,backslash,fdelay, pipe, hat
}
134 \newcommand{\farg}[1]{\textrm{\textit{#1}}}
135 \newcommand{\ldbrack}{[\!
[ \,
}
136 \newcommand{\rdbrack}{\,
]\!
] }
137 \newcommand{\rdbrackC}{\rdbrack_{\mathrm{C
}}\,
}
138 \newcommand{\dbrack}[1]{\ldbrack #1 \rdbrack}
139 \newcommand{\semantic}[1]{\ldbrack #1 \rdbrack}
140 \newcommand{\dbrackC}[1]{\ldbrack #1 \rdbrackC}
142 \newcommand{\faust}{\textsc{Faust
}\xspace}
143 \newcommand{\faustine}{\textsc{Faustine
}\xspace}
144 \newcommand{\latex}{\LaTeX\xspace}
145 \newcommand{\ircam}{\textsc{Ircam
}\xspace}
146 \newcommand{\astree}{\textsc{Astree
}\xspace}
147 \newcommand{\svg}{\textsc{Svg
}\xspace}
150 \setlength{\parindent}{0pt
}
151 \setlength{\parskip}{1ex plus
0.5ex minus
0.2ex
}
157 \chapter{Introduction
}
159 \faustine is an interpreter for multi-rate and vector exented
\faust programs testing, written in OCaml, at CRI of MINES ParisTech, and covered by the GNU Public License V3 (see LICENSE.txt).
161 \faust (
\textit{Functional Audio Stream
}) is a functional programming language specifically designed for real-time signal processing and synthesis.
\faust targets high-performance signal processing applications and audio plug-ins for a variety of platforms and standards.
163 \section{Design Principles
}
165 Various principles have guided the design of
\faustine:
169 \item \faustine is a
\textit{test bed
} interpreter for faust programs, especially for vector extension. It aims at providing a framework to test
\textit{vector
} and
\textit{multi-rate
} ideas quite easily, without having to deal with the burdens of the compiler.
\faustine is written in OCaml.
171 \item \faustine programs are interpreted upon
\faust language and extensions, onto input files (wav or csv), and producing output files (also wav or csv). The interpreter relies on a
\faust preprocessor to translate
\faust programs into equivalent flatten programs containing only core
\faust functions except GUI ones.
173 \item In most cases,
\faustine is inefficient but, still, it often allows to get a idea of time consumption location.
175 \item \faustine depends on g++ and ocamlopt compilers. It embeds libsndfile and a slighlty modified version of libsndfile-ocaml.
177 \item For the moment,
\faustine only handles dynamic type-checking but future work should address static type-checking.
179 \item \faustine current extension supports four multirate and vector functions:
\lstinline'vectorize',
\lstinline'serialize',
\lstinline'
[ ]' (pick vector element), and
\lstinline'#' (concatenate two vector elements).
181 \item So far, several vector libraries have been developed: complex.lib, fft.lib, fft2d.lib and morpho.lib.
185 \chapter{Compiling and installing
\faustine}
187 \faustine's git repository can be cloned calling:
190 git clone https://scm.cri.ensmp.fr/git/Faustine.git
194 \section{Organization of the distribution
}
196 \faustine directory should contain the following elements:
199 benchmarks/ & benchmark result files\\
200 Changes.txt & what's new with each release\\
201 configure & compilation configuration script\\
202 examples/ & vector examples (fft, image processing...)\\
203 INSTALL.txt & Faustine installation instructions\\
204 interpreter/ & Faustine's interpreter source code\\
205 lib/ & library files in Faustine (fft.lib, morpho.lib...)\\
206 LICENSE.txt & license and copyright notice\\
207 Makefile & main Makefile to compile and install\\
208 README.txt & this file\\
211 \section{Compiling and Installing
}
212 \faustine has no dependencies outside standard libraries, except OCaml and g++ compilers and 'make'-like standard commands. Therefore the compilation should be straightforward. Configure is necessary for libsndfile embedded library. To compile the
\faustine interpreter do:
220 If the compilation was successful you can test the interpreter before installing it:
226 \chapter{How to use
\faustine}
230 \chapter{How to maintain and extend
\faustine}
234 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
235 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
237 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
238 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%