### 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!