Commit 99227006 authored by Antonin Dudermel's avatar Antonin Dudermel
Browse files

spellcheck intro done

parent 4bfafeef
......@@ -8,15 +8,15 @@
\label{sec:sign-proc-basics}
A \emph{signal} is a mathematical abstraction representing a physical quantity
varying in one or many dimensions (e.g. air pressure variying in time, also
varying in one or many dimensions (e.g. air pressure varying in time, also
known as sound). Signals can be continuous (it is then represented as a
function) or discrete (it is then represented as a two-sided infinite
sequence). The process transforming a continuous signal into a discrete one by
teking regular samples of it is calleld sampling. In time-varying signals,
taking regular samples of it is called sampling. In time-varying signals,
sampling is characterized by its frequency (the inverse of the time between 2
samples). Given a sampling frequence \(\fq\), sound processing manipulates
samples). Given a sampling frequency \(\fq\), sound processing manipulates
discretized sound signals living in \(\Real^\Rel\), denoted \(s(t)\) in this
report. The mathematical absttraction that manipulates signals is called
report. The mathematical abstraction that manipulates signals is called
\emph{processor}. In sound processing, it is a function
\(f:(\Real^\Rel)^p \to (\Real^\Rel)^q\) that takes input signals
\(x_i(t), i < p\) and outputs signals
......@@ -37,7 +37,7 @@ signals.\footnote{All notations are gathered in the appendix
% \end{figure}
Faust\cite{faustprogramming} (Functional Audio Stream) is a compiled
domain-specific language describing sound processors. Being purely functionnal,
domain-specific language describing sound processors. Being purely functional,
it does not manipulates samples as values in arrays, but works at high level on
the mathematical abstract object that is a signal. Faust describes processors
with simple primitives (such as \lstinline{+, *, sin}\dots) that are patched
......@@ -115,19 +115,19 @@ source of many problems, as it creates loops in the signal graph.
Even if it is a compiled language, and thus among the fastest block-description
signal processing languages, Faust is not suited for applications on which the
latency is critical. This is due to the fact that Faust programs are meant to be
executed on computers. When recording sound with a microphone, the soundcard of
executed on computers. When recording sound with a microphone, the sound card of
the computer encodes sounds samples before indicating the OS that samples are
ready. Yet the Kernel can not afford to have an interruption from the soundcard
ready. Yet the Kernel can not afford to have an interruption from the sound card
every sample (At \(\SI{44100}{\hertz}\), it means once every
\(\SI{23}{\micro\second}\)), so the soundcard buffers samples and uses one
interruption to send the whole buffer to the Kernel. Similarily, when the OS
wants to play sounds, it sends a chunk of samples to the soundcard, which
\(\SI{23}{\micro\second}\)), so the sound card buffers samples and uses one
interruption to send the whole buffer to the Kernel. Similarly, when the OS
wants to play sounds, it sends a chunk of samples to the sound card, which
buffers them before playing them one after the other, through loudspeakers. With
a typical chunk size of 64 samples, this introduces a latency of at least
\(64/ 44100 = \SI{1}{\milli\second} \). For applications such as active noise
reduction, on which one must be able to catch a soundwave with destructive
interferences, with a sound speed of \(\SI{330}{\meter\per\second}\), this
latency represent a movement of the soundwave of
reduction, on which one must be able to catch a sound wave with destructive
interference, with a sound speed of \(\SI{330}{\meter\per\second}\), this
latency represent a movement of the sound wave of
\(64 * 330 / 44100 =\SI{48}{\centi\meter}\) between the moment the first sample
is recorded and the moment the first sample is emitted\footnote{it is more
complex in real life, Coding/Decoding accounts also for latency, the buffer
......@@ -138,8 +138,8 @@ dedicated to audio processing, for instance in an active noise cancellation
headphone, samples are processed one after the other, which leads to latency
within \(\SI{10}{\micro\second}\). This has however an obvious
drawback. Computers are general-purpose machines, whereas ASICs are
application-specific circuit, and circuit are not reprogrammable and very coslty
to produce. A tradeoff between those two worlds can be found in
application-specific circuit, and circuit are not reprogrammable and very costly
to produce. A trade-off between those two worlds can be found in
Field-Programmable Gate Arrays (FPGA). An FPGA is an integrated circuit designed
to emulate arbitrary digital circuits using a circuit description written in
domain specific languages such as VHDL or Verilog, but using those languages
......@@ -162,7 +162,7 @@ very convenient, as they require massive use of pragmas to annotate code.
\end{figure}
So both of those techniques are not adapted for mainstream Faust users that are
more musicians than programmers. The aim of the FAST project is to enpower Faust
more musicians than programmers. The aim of the FAST project is to empower Faust
programmers with a low-latency backend on FPGA that could be used in real-time
applications, such as live artificial reverberation or active noise control.
......@@ -171,7 +171,7 @@ applications, such as live artificial reverberation or active noise control.
As stated above, a Faust program represent processors \ie{} sequences of Real
numbers. Yet the compuler must output C++ code for which there are no Real
numbers. Yet the compiler must output C++ code for which there are no Real
numbers representation, so it has to use an approximation of the reals, for
instance the floating-point numbers.
......@@ -187,7 +187,7 @@ catastrophic\cite{muller2010handbookfloatingpoint} -- very quick and dirty
brainless Do-What-I-Mean arithmetic, allowing the programmer to focus on
something else and thus devising more complex programs. This has however a cost
: on many specific cases, the result of the floating-point computation is either
embarrassingly overaccurate\footnote{24 bits are used in high-quality audio in
embarrassingly over-accurate\footnote{24 bits are used in high-quality audio in
DVD and Blue-Rays, where 16 bits are sufficient for Compact Discs.}(even with
a dirty implementation) or mostly scrambled (either by using inaccurate inputs
ore due to approximation errors) and then the machine spent precious time and
......@@ -202,7 +202,7 @@ therefore less resources (time, power, silicon) than floats. However, as being
far less versatile than floats, the programmer often have multiple fixed-point
formats in the same program, and must handle by hand in software the conversion
between multiple formats. This makes the code harder to read. The user must also
be precautious when choosing a format, as it can result to overaccurate useless
be precautions when choosing a format, as it can result to over-accurate useless
computations, completely scrambled values (just like in floats), or overflows
(just like ints).
......@@ -222,7 +222,7 @@ The fixed-point numbers are simply a fractional generalization of integers. A
fixed-point unsigned format is described by two integers\footnote{but there are
way too much variants} \(\msb, \lsb \in \Rel\) which are the positions of its
Most Significative Bit (MSB) and Least Significative Bit (LSB), so
\(\msb > \lsb\). It is denoted \(\ufix(\msb,\lsb)\) and has a wordsize
\(\msb > \lsb\). It is denoted \(\ufix(\msb,\lsb)\) and has a word-size
\(\msb - \lsb + 1\). In this format, the \(\msb - \lsb + 1\) bits
\(x_\lsb x_{\lsb + 1}\dots x_m\) represents the number
......@@ -296,7 +296,7 @@ transform it into a C program using the Faust compiler, annotate every variable
with a fixed-point format using pragmas and finally compile the code to FPGA
using HLS.
While being a particuliar case, the multimodal filtering bell model turns out to
While being a particular case, the multimodal filtering bell model turns out to
be a very interesting case study. The goal of multimodal sound synthesis is to
implement the signal
......@@ -306,9 +306,9 @@ which can be divided into two parts that are bread-and-butter for audio
synthesis (\figref{fig:bell-impl}).
\begin{itemize}
\item A (potentially infinite) sum ponderated by coefficients
\item A (potentially infinite) sum weighted by coefficients
\item \(\cos(2\pi \fq_m t)e^{-t/\tau_m}\), which can be implemented using a
special class of processors called Linear Time-Invariants (LTI) filters.
special class of processors called Linear Time-Invariant (LTI) filters.
\end{itemize}
LTI filters are processors verifying a Constant-Coefficients Difference Equation
......@@ -352,7 +352,7 @@ If on one hand, designing a tool that can derive the good fixed point format
from an arbitrary program on any universal language is undecidable, on the
other hand, Faust is a domain-specific language targeting audio, so one can hope
that most of Faust usecases don't fall in the very specific impossible
cases. Furthermore, the team developping the software
cases. Furthermore, the team developing the software
FloPoCo\cite{welcomeflopoco} showed that designing accurate fixed-point circuit
for arithmetic operators with arbitrary range and precision was possible on
almost every example and that many parts of this procedure were easy to
......
......@@ -21,7 +21,7 @@
MSB & Most Significative Bit\\
RN & Round-to-Nearest \\
SOC & System On Chip\\
ulp & Unit in last position\\
ulp & Unit in last place\\
WCPG & Worst-Case Peak Gain\\
\hline
\end{tabular}
......@@ -35,9 +35,9 @@
\(S(t)\) & interval containing the signal \(s(t)\) for each time \(t\)\\
\hline
\(a,b,c,d\) & Real value \\
\(i, j, k\) & index \\
\(\lsb\) & Least Significative Bit (LSB), or an integer\\
\(\msb\) & Most Significative Bit (MSB), or an integer\\
\(i, j, k\) & indices \\
\(\lsb\) & LSB position, or an integer\\
\(\msb\) & MSB position, or an integer\\
\(n, p, q\) & Nonnegative integer \\
\(s(t)\) & A Signal \(s: \Rel \to \Real\) \\
\(w\) & A wordlength (the size in bits of a number)\\
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment